Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: background.js

Issue 4731979438227456: Issue 1663 - Emulate background page and implement proper message responder (Closed)
Patch Set: Using PageMap for listeners Created Dec. 19, 2014, 3:41 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2014 Eyeo GmbH
4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation.
8 *
9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 (function(global)
19 {
20 function updateFromURL(data)
21 {
22 if (window.location.search)
23 {
24 var params = window.location.search.substr(1).split("&");
25 for (var i = 0; i < params.length; i++)
26 {
27 var parts = params[i].split("=", 2);
28 if (parts.length == 2 && parts[0] in data)
29 data[parts[0]] = decodeURIComponent(parts[1]);
30 }
31 }
32 }
33
34 var subscriptions =[
35 "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt",
36 "https://easylist-downloads.adblockplus.org/exceptionrules.txt",
37 "https://easylist-downloads.adblockplus.org/fanboy-social.txt"
38 ];
39
40 global.Utils = {
41 getDocLink: function(link)
42 {
43 return "https://adblockplus.org/redirect?link=" + encodeURIComponent(link) ;
44 }
45 };
46
47 global.Subscription = function(url)
48 {
49 this.url = url;
50 this.title = "Subscription " + url;
51 this.disabled = false;
52 this.lastDownload = 1234;
53 };
54
55 global.Subscription.fromURL = function(url)
56 {
57 return new global.Subscription(url);
58 };
59
60 global.DownloadableSubscription = global.Subscription;
61 global.SpecialSubscription = function() {};
62
63 global.FilterStorage = {
64 get subscriptions()
65 {
66 return subscriptions.map(global.Subscription.fromURL);
67 },
68
69 get knownSubscriptions()
70 {
71 var result = {};
72 for (var i = 0; i < subscriptions.length; i++)
73 result[subscriptions[i]] = global.Subscription.fromURL(subscriptions[i]) ;
74 return result;
75 },
76
77 addSubscription: function(subscription)
78 {
79 var index = subscriptions.indexOf(subscription.url);
80 if (index < 0)
81 {
82 subscriptions.push(subscription.url);
83 global.FilterNotifier.triggerListeners("subscription.added", subscriptio n);
84 }
85 },
86
87 removeSubscription: function(subscription)
88 {
89 var index = subscriptions.indexOf(subscription.url);
90 if (index >= 0)
91 {
92 subscriptions.splice(index, 1);
93 global.FilterNotifier.triggerListeners("subscription.removed", subscript ion);
94 }
95 }
96 };
97
98 global.BlockingFilter = function() {};
99
100 global.defaultMatcher = {
101 matchesAny: function(url, requestType, docDomain, thirdParty)
102 {
103 var params = {blockedURLs: ""};
104 updateFromURL(params);
105 var blocked = params.blockedURLs.split(",");
106 if (blocked.indexOf(url) >= 0)
107 return new global.BlockingFilter();
108 else
109 return null;
110 }
111 };
112
113 var notifierListeners = [];
114 global.FilterNotifier = {
115 addListener: function(listener)
116 {
117 if (notifierListeners.indexOf(listener) < 0)
118 notifierListeners.push(listener);
119 },
120
121 removeListener: function(listener)
122 {
123 var index = notifierListeners.indexOf(listener);
124 if (index >= 0)
125 notifierListeners.splice(index, 1);
126 },
127
128 triggerListeners: function()
129 {
130 var args = Array.prototype.slice.apply(arguments);
131 var listeners = notifierListeners.slice();
132 for (var i = 0; i < listeners.length; i++)
133 listeners[i].apply(null, args);
134 }
135 };
136
137 global.require = function(module)
138 {
139 if (module == "info")
140 {
141 var result = {
142 platform: "gecko",
143 platformVersion: "34.0",
144 application: "firefox",
145 applicationVersion: "34.0"
146 };
147 updateFromURL(result);
148 return result;
149 }
150 else
151 return undefined;
152 }
153
154 global.openOptions = function()
155 {
156 window.open("http://example.com/options.html", "_blank");
157 };
158
159 var issues = {seenDataCorruption: false, filterlistsReinitialized: false};
160 updateFromURL(issues);
161 global.seenDataCorruption = issues.seenDataCorruption;
162 global.filterlistsReinitialized = issues.filterlistsReinitialized;
163 })(this);
OLDNEW
« no previous file with comments | « background.html ('k') | ext/background.js » ('j') | messageResponder.js » ('J')

Powered by Google App Engine
This is Rietveld