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

Delta Between Two Patch Sets: messageResponder.js

Issue 29339034: Issue 3869 - Use the new FilterNotifier API (Closed)
Left Patch Set: Created March 23, 2016, 11 p.m.
Right Patch Set: Unsupport *.listen with null Created March 24, 2016, 2:33 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « background.js ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 Eyeo GmbH 3 * Copyright (C) 2006-2016 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 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 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 var changeListeners = new global.ext.PageMap(); 55 var changeListeners = new global.ext.PageMap();
56 var listenedPreferences = []; 56 var listenedPreferences = [];
57 var listenedFilterChanges = []; 57 var listenedFilterChanges = [];
58 var messageTypes = { 58 var messageTypes = {
59 "app": "app.listen", 59 "app": "app.listen",
60 "filter": "filters.listen", 60 "filter": "filters.listen",
61 "pref": "prefs.listen", 61 "pref": "prefs.listen",
62 "subscription": "subscriptions.listen" 62 "subscription": "subscriptions.listen"
63 }; 63 };
64 64
65 function sendMessage(type, action) 65 function sendMessage(type, action)
Sebastian Noack 2016/03/23 23:15:51 Sorry for refactoring sendMessage() again, but wit
66 { 66 {
67 var pages = changeListeners.keys(); 67 var pages = changeListeners.keys();
68 if (pages.length == 0) 68 if (pages.length == 0)
69 return; 69 return;
70 70
71 var args = []; 71 var args = [];
72 for (var i = 2; i < arguments.length; i++) 72 for (var i = 2; i < arguments.length; i++)
73 { 73 {
74 var arg = arguments[i]; 74 var arg = arguments[i];
75 if (arg instanceof Subscription) 75 if (arg instanceof Subscription)
(...skipping 13 matching lines...) Expand all
89 { 89 {
90 page.sendMessage({ 90 page.sendMessage({
91 type: messageTypes[type], 91 type: messageTypes[type],
92 action: action, 92 action: action,
93 args: args 93 args: args
94 }); 94 });
95 } 95 }
96 } 96 }
97 } 97 }
98 98
99 function addFilterListeners(type, actions) 99 function addFilterListeners(type, actions)
Sebastian Noack 2016/03/23 23:15:51 Same pattern as for Prefs.on(), the first UI that
100 { 100 {
101 actions.forEach(function(action) 101 actions.forEach(function(action)
102 { 102 {
103 var name; 103 var name;
104 if (type == "filter" && action == "loaded") 104 if (type == "filter" && action == "loaded")
105 name = "load"; 105 name = "load";
106 else 106 else
107 name = type + "." + action; 107 name = type + "." + action;
108 108
109 if (listenedFilterChanges.indexOf(name) == -1) 109 if (listenedFilterChanges.indexOf(name) == -1)
110 { 110 {
111 listenedFilterChanges.push(name); 111 listenedFilterChanges.push(name);
112 FilterNotifier.on(name, function() 112 FilterNotifier.on(name, function()
113 { 113 {
114 var args = [type, action]; 114 var args = [type, action];
115 for (var i = 0; i < arguments.length; i++) 115 for (var i = 0; i < arguments.length; i++)
Sebastian Noack 2016/03/23 23:15:51 For the record, simply passing the arguments objec
116 args.push(arguments[i]); 116 args.push(arguments[i]);
117 sendMessage.apply(null, args); 117 sendMessage.apply(null, args);
118 }); 118 });
119 } 119 }
120 }); 120 });
121 } 121 }
122 122
123 function getListenerFilters(page) 123 function getListenerFilters(page)
124 { 124 {
125 var listenerFilters = changeListeners.get(page); 125 var listenerFilters = changeListeners.get(page);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 devToolsPanel: info.platform == "chromium", 178 devToolsPanel: info.platform == "chromium",
179 safariContentBlocker: "safari" in global 179 safariContentBlocker: "safari" in global
180 && "extension" in global.safari 180 && "extension" in global.safari
181 && "setContentBlocker" in global.safari.extension 181 && "setContentBlocker" in global.safari.extension
182 }); 182 });
183 } 183 }
184 else 184 else
185 callback(null); 185 callback(null);
186 break; 186 break;
187 case "app.listen": 187 case "app.listen":
188 var listenerFilters = getListenerFilters(sender.page); 188 getListenerFilters(sender.page).app = message.filter;
189 if (message.filter)
190 listenerFilters.app = message.filter;
191 else
192 delete listenerFilters.app;
193 break; 189 break;
194 case "app.open": 190 case "app.open":
195 if (message.what == "options") 191 if (message.what == "options")
196 ext.showOptions(); 192 ext.showOptions();
197 break; 193 break;
198 case "filters.add": 194 case "filters.add":
199 var result = require("filterValidation").parseFilter(message.text); 195 var result = require("filterValidation").parseFilter(message.text);
200 var errors = []; 196 var errors = [];
201 if (result.error) 197 if (result.error)
202 errors.push(result.error.toString()); 198 errors.push(result.error.toString());
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 var filter = subscription.filters[j]; 275 var filter = subscription.filters[j];
280 if (/^@@\|\|([^\/:]+)\^\$document$/.test(filter.text)) 276 if (/^@@\|\|([^\/:]+)\^\$document$/.test(filter.text))
281 continue; 277 continue;
282 278
283 if (!(filter.text in seenFilter)) 279 if (!(filter.text in seenFilter))
284 FilterStorage.removeFilter(filter); 280 FilterStorage.removeFilter(filter);
285 } 281 }
286 } 282 }
287 break; 283 break;
288 case "filters.listen": 284 case "filters.listen":
289 var listenerFilters = getListenerFilters(sender.page); 285 getListenerFilters(sender.page).filter = message.filter;
290 if (message.filter) 286 addFilterListeners("filter", message.filter);
291 {
292 addFilterListeners("filter", message.filter);
293 listenerFilters.filter = message.filter;
294 }
295 else
296 delete listenerFilters.filter;
297 break; 287 break;
298 case "filters.remove": 288 case "filters.remove":
299 var filter = Filter.fromText(message.text); 289 var filter = Filter.fromText(message.text);
300 var subscription = null; 290 var subscription = null;
301 if (message.subscriptionUrl) 291 if (message.subscriptionUrl)
302 subscription = Subscription.fromURL(message.subscriptionUrl); 292 subscription = Subscription.fromURL(message.subscriptionUrl);
303 293
304 if (!subscription) 294 if (!subscription)
305 FilterStorage.removeFilter(filter); 295 FilterStorage.removeFilter(filter);
306 else 296 else
307 FilterStorage.removeFilter(filter, subscription, message.index); 297 FilterStorage.removeFilter(filter, subscription, message.index);
308 break; 298 break;
309 case "prefs.get": 299 case "prefs.get":
310 callback(Prefs[message.key]); 300 callback(Prefs[message.key]);
311 break; 301 break;
312 case "prefs.listen": 302 case "prefs.listen":
313 var listenerFilters = getListenerFilters(sender.page); 303 getListenerFilters(sender.page).pref = message.filter;
314 if (message.filter) 304 message.filter.forEach(function(preference)
315 { 305 {
316 message.filter.forEach(function(preference) 306 if (listenedPreferences.indexOf(preference) == -1)
317 { 307 {
318 if (listenedPreferences.indexOf(preference) == -1) 308 listenedPreferences.push(preference);
309 Prefs.on(preference, function()
319 { 310 {
320 listenedPreferences.push(preference); 311 sendMessage("pref", preference, Prefs[preference]);
321 Prefs.on(preference, function() 312 });
322 { 313 }
323 sendMessage("pref", preference, Prefs[preference]); 314 });
324 });
325 }
326 });
327 listenerFilters.pref = message.filter;
328 }
329 else
330 delete listenerFilters.pref;
331 break; 315 break;
332 case "prefs.toggle": 316 case "prefs.toggle":
333 if (message.key == "notifications_ignoredcategories") 317 if (message.key == "notifications_ignoredcategories")
334 NotificationStorage.toggleIgnoreCategory("*"); 318 NotificationStorage.toggleIgnoreCategory("*");
335 else 319 else
336 Prefs[message.key] = !Prefs[message.key]; 320 Prefs[message.key] = !Prefs[message.key];
337 break; 321 break;
338 case "subscriptions.add": 322 case "subscriptions.add":
339 var subscription = Subscription.fromURL(message.url); 323 var subscription = Subscription.fromURL(message.url);
340 if ("title" in message) 324 if ("title" in message)
(...skipping 24 matching lines...) Expand all
365 return false; 349 return false;
366 if (s instanceof DownloadableSubscription && message.downloadable) 350 if (s instanceof DownloadableSubscription && message.downloadable)
367 return true; 351 return true;
368 if (s instanceof SpecialSubscription && message.special) 352 if (s instanceof SpecialSubscription && message.special)
369 return true; 353 return true;
370 return false; 354 return false;
371 }); 355 });
372 callback(subscriptions.map(convertSubscription)); 356 callback(subscriptions.map(convertSubscription));
373 break; 357 break;
374 case "subscriptions.listen": 358 case "subscriptions.listen":
375 var listenerFilters = getListenerFilters(sender.page); 359 getListenerFilters(sender.page).subscription = message.filter;
376 if (message.filter) 360 addFilterListeners("subscription", message.filter);
377 {
378 addFilterListeners("subscription", message.filter);
379 listenerFilters.subscription = message.filter;
380 }
381 else
382 delete listenerFilters.subscription;
383 break; 361 break;
384 case "subscriptions.remove": 362 case "subscriptions.remove":
385 var subscription = Subscription.fromURL(message.url); 363 var subscription = Subscription.fromURL(message.url);
386 if (subscription.url in FilterStorage.knownSubscriptions) 364 if (subscription.url in FilterStorage.knownSubscriptions)
387 FilterStorage.removeSubscription(subscription); 365 FilterStorage.removeSubscription(subscription);
388 break; 366 break;
389 case "subscriptions.toggle": 367 case "subscriptions.toggle":
390 var subscription = Subscription.fromURL(message.url); 368 var subscription = Subscription.fromURL(message.url);
391 if (subscription.url in FilterStorage.knownSubscriptions) 369 if (subscription.url in FilterStorage.knownSubscriptions)
392 { 370 {
(...skipping 21 matching lines...) Expand all
414 if (subscription instanceof DownloadableSubscription) 392 if (subscription instanceof DownloadableSubscription)
415 Synchronizer.execute(subscription, true); 393 Synchronizer.execute(subscription, true);
416 } 394 }
417 break; 395 break;
418 case "subscriptions.isDownloading": 396 case "subscriptions.isDownloading":
419 callback(Synchronizer.isExecuting(message.url)); 397 callback(Synchronizer.isExecuting(message.url));
420 break; 398 break;
421 } 399 }
422 }); 400 });
423 })(this); 401 })(this);
LEFTRIGHT

Powered by Google App Engine
This is Rietveld