| OLD | NEW |
| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 for (var i = 0; i < keys.length; i++) | 62 for (var i = 0; i < keys.length; i++) |
| 63 result[keys[i]] = obj[keys[i]]; | 63 result[keys[i]] = obj[keys[i]]; |
| 64 return result; | 64 return result; |
| 65 } | 65 } |
| 66 | 66 |
| 67 var convertSubscription = convertObject.bind(null, ["disabled", | 67 var convertSubscription = convertObject.bind(null, ["disabled", |
| 68 "downloadStatus", "homepage", "lastDownload", "title", "url"]); | 68 "downloadStatus", "homepage", "lastDownload", "title", "url"]); |
| 69 var convertFilter = convertObject.bind(null, ["text"]); | 69 var convertFilter = convertObject.bind(null, ["text"]); |
| 70 | 70 |
| 71 var changeListeners = new global.ext.PageMap(); | 71 var changeListeners = new global.ext.PageMap(); |
| 72 var listenedPreferences = []; | 72 var listenedPreferences = Object.create(null); |
| 73 var listenedFilterChanges = []; | 73 var listenedFilterChanges = Object.create(null); |
| 74 var messageTypes = { | 74 var messageTypes = { |
| 75 "app": "app.listen", | 75 "app": "app.listen", |
| 76 "filter": "filters.listen", | 76 "filter": "filters.listen", |
| 77 "pref": "prefs.listen", | 77 "pref": "prefs.listen", |
| 78 "subscription": "subscriptions.listen" | 78 "subscription": "subscriptions.listen" |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 function sendMessage(type, action) | 81 function sendMessage(type, action) |
| 82 { | 82 { |
| 83 var pages = changeListeners.keys(); | 83 var pages = changeListeners.keys(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 function addFilterListeners(type, actions) | 115 function addFilterListeners(type, actions) |
| 116 { | 116 { |
| 117 actions.forEach(function(action) | 117 actions.forEach(function(action) |
| 118 { | 118 { |
| 119 var name; | 119 var name; |
| 120 if (type == "filter" && action == "loaded") | 120 if (type == "filter" && action == "loaded") |
| 121 name = "load"; | 121 name = "load"; |
| 122 else | 122 else |
| 123 name = type + "." + action; | 123 name = type + "." + action; |
| 124 | 124 |
| 125 if (listenedFilterChanges.indexOf(name) == -1) | 125 if (!(name in listenedFilterChanges)) |
| 126 { | 126 { |
| 127 listenedFilterChanges.push(name); | 127 listenedFilterChanges[name] = null; |
| 128 FilterNotifier.on(name, function() | 128 FilterNotifier.on(name, function() |
| 129 { | 129 { |
| 130 var args = [type, action]; | 130 var args = [type, action]; |
| 131 for (var i = 0; i < arguments.length; i++) | 131 for (var i = 0; i < arguments.length; i++) |
| 132 args.push(arguments[i]); | 132 args.push(arguments[i]); |
| 133 sendMessage.apply(null, args); | 133 sendMessage.apply(null, args); |
| 134 }); | 134 }); |
| 135 } | 135 } |
| 136 }); | 136 }); |
| 137 } | 137 } |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 else | 303 else |
| 304 FilterStorage.removeFilter(filter, subscription, message.index); | 304 FilterStorage.removeFilter(filter, subscription, message.index); |
| 305 break; | 305 break; |
| 306 case "prefs.get": | 306 case "prefs.get": |
| 307 callback(Prefs[message.key]); | 307 callback(Prefs[message.key]); |
| 308 break; | 308 break; |
| 309 case "prefs.listen": | 309 case "prefs.listen": |
| 310 getListenerFilters(sender.page).pref = message.filter; | 310 getListenerFilters(sender.page).pref = message.filter; |
| 311 message.filter.forEach(function(preference) | 311 message.filter.forEach(function(preference) |
| 312 { | 312 { |
| 313 if (listenedPreferences.indexOf(preference) == -1) | 313 if (!(preference in listenedPreferences)) |
| 314 { | 314 { |
| 315 listenedPreferences.push(preference); | 315 listenedPreferences[preference] = null; |
| 316 Prefs.on(preference, function() | 316 Prefs.on(preference, function() |
| 317 { | 317 { |
| 318 sendMessage("pref", preference, Prefs[preference]); | 318 sendMessage("pref", preference, Prefs[preference]); |
| 319 }); | 319 }); |
| 320 } | 320 } |
| 321 }); | 321 }); |
| 322 break; | 322 break; |
| 323 case "prefs.toggle": | 323 case "prefs.toggle": |
| 324 if (message.key == "notifications_ignoredcategories") | 324 if (message.key == "notifications_ignoredcategories") |
| 325 NotificationStorage.toggleIgnoreCategory("*"); | 325 NotificationStorage.toggleIgnoreCategory("*"); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 if (subscription instanceof DownloadableSubscription) | 399 if (subscription instanceof DownloadableSubscription) |
| 400 Synchronizer.execute(subscription, true); | 400 Synchronizer.execute(subscription, true); |
| 401 } | 401 } |
| 402 break; | 402 break; |
| 403 case "subscriptions.isDownloading": | 403 case "subscriptions.isDownloading": |
| 404 callback(Synchronizer.isExecuting(message.url)); | 404 callback(Synchronizer.isExecuting(message.url)); |
| 405 break; | 405 break; |
| 406 } | 406 } |
| 407 }); | 407 }); |
| 408 })(this); | 408 })(this); |
| OLD | NEW |