| 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-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 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 |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
| 13 * | 13 * |
| 14 * You should have received a copy of the GNU General Public License | 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/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| 16 */ | 16 */ |
| 17 | 17 |
| 18 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | 18 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); |
| 19 | 19 |
| 20 // Main browser window | 20 // Main browser window |
| 21 var mainWin = parent; | 21 var mainWin = parent; |
| 22 | 22 |
| 23 // Location of the content window that the list refers to |
| 24 var contentLocation = null; |
| 25 |
| 23 // The window handler currently in use | 26 // The window handler currently in use |
| 24 var requestNotifier = null; | 27 var requestNotifier = null; |
| 25 | 28 |
| 26 var cacheStorage = null; | 29 var cacheStorage = null; |
| 27 | 30 |
| 28 // Matcher for disabled filters | 31 // Matcher for disabled filters |
| 29 var disabledMatcher = new CombinedMatcher(); | 32 var disabledMatcher = new CombinedMatcher(); |
| 30 | 33 |
| 31 // Cached string values | 34 // Cached string values |
| 32 var docDomainThirdParty = null; | 35 var docDomainThirdParty = null; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 if (params && params.position) | 83 if (params && params.position) |
| 81 defaults = params.position; | 84 defaults = params.position; |
| 82 | 85 |
| 83 let wnd = parent.document.documentElement; | 86 let wnd = parent.document.documentElement; |
| 84 for (let attr in defaults) | 87 for (let attr in defaults) |
| 85 if (!wnd.hasAttribute(attr)) | 88 if (!wnd.hasAttribute(attr)) |
| 86 wnd.setAttribute(attr, defaults[attr]); | 89 wnd.setAttribute(attr, defaults[attr]); |
| 87 } | 90 } |
| 88 | 91 |
| 89 let {getBrowser, addBrowserLocationListener} = require("appSupport"); | 92 let {getBrowser, addBrowserLocationListener} = require("appSupport"); |
| 93 updateContentLocation(); |
| 90 Object.defineProperty(window, "content", { get: () => getBrowser(mainWin).cont
entWindow }); | 94 Object.defineProperty(window, "content", { get: () => getBrowser(mainWin).cont
entWindow }); |
| 91 | 95 |
| 92 // Initialize matcher for disabled filters | 96 // Initialize matcher for disabled filters |
| 93 reloadDisabledFilters(); | 97 reloadDisabledFilters(); |
| 94 FilterNotifier.addListener(reloadDisabledFilters); | 98 FilterNotifier.addListener(reloadDisabledFilters); |
| 95 Prefs.addListener(onPrefChange); | 99 Prefs.addListener(onPrefChange); |
| 96 | 100 |
| 97 // Activate flasher | 101 // Activate flasher |
| 98 list.addEventListener("select", onSelectionChange, false); | 102 list.addEventListener("select", onSelectionChange, false); |
| 99 | 103 |
| 100 // Initialize data | 104 // Initialize data |
| 101 handleLocationChange(); | 105 handleLocationChange(); |
| 102 | 106 |
| 103 // Install a progress listener to catch location changes | 107 // Install a progress listener to catch location changes |
| 104 if (addBrowserLocationListener) | 108 if (addBrowserLocationListener) |
| 105 addBrowserLocationListener(mainWin, handleLocationChange, true); | 109 addBrowserLocationListener(mainWin, handleLocationChange, true); |
| 106 | 110 |
| 107 for (let type of Policy.contentTypes) | 111 for (let type of Policy.contentTypes) |
| 108 localizedTypes.set(type, Utils.getString("type_label_" + type.toLowerCase())
); | 112 localizedTypes.set(type, Utils.getString("type_label_" + type.toLowerCase())
); |
| 109 } | 113 } |
| 110 | 114 |
| 111 // To be called for a detached window when the main window has been closed | 115 // To be called for a detached window when the main window has been closed |
| 112 function mainUnload() { | 116 function mainUnload() { |
| 113 parent.close(); | 117 parent.close(); |
| 114 } | 118 } |
| 115 | 119 |
| 120 function updateContentLocation() |
| 121 { |
| 122 let {getCurrentLocation} = require("appSupport"); |
| 123 let location = getCurrentLocation(mainWin); |
| 124 if (location instanceof Ci.nsIURI) |
| 125 location = location.spec; |
| 126 contentLocation = location; |
| 127 } |
| 128 |
| 116 function getFilter(item) | 129 function getFilter(item) |
| 117 { | 130 { |
| 118 if ("filter" in item && item.filter) | 131 if ("filter" in item && item.filter) |
| 119 return Filter.fromText(item.filter); | 132 return Filter.fromText(item.filter); |
| 120 else | 133 else |
| 121 return null; | 134 return null; |
| 122 } | 135 } |
| 123 | 136 |
| 124 // To be called on unload | 137 // To be called on unload |
| 125 function cleanUp() { | 138 function cleanUp() { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 | 211 |
| 199 if (requestNotifier) | 212 if (requestNotifier) |
| 200 requestNotifier.flashNodes(item ? item.ids : null, Prefs.flash_scrolltoitem)
; | 213 requestNotifier.flashNodes(item ? item.ids : null, Prefs.flash_scrolltoitem)
; |
| 201 } | 214 } |
| 202 | 215 |
| 203 function handleLocationChange() | 216 function handleLocationChange() |
| 204 { | 217 { |
| 205 if (requestNotifier) | 218 if (requestNotifier) |
| 206 requestNotifier.shutdown(); | 219 requestNotifier.shutdown(); |
| 207 | 220 |
| 221 updateContentLocation(); |
| 208 treeView.clearData(); | 222 treeView.clearData(); |
| 209 | 223 |
| 210 let {getBrowser, addBrowserLocationListener} = require("appSupport"); | 224 let {getBrowser, addBrowserLocationListener} = require("appSupport"); |
| 211 let browser = getBrowser(mainWin); | 225 let browser = getBrowser(mainWin); |
| 212 if ("selectedBrowser" in browser) | 226 if ("selectedBrowser" in browser) |
| 213 browser = browser.selectedBrowser; | 227 browser = browser.selectedBrowser; |
| 214 let outerWindowID = browser.outerWindowID; | 228 let outerWindowID = browser.outerWindowID; |
| 215 treeView.itemToSelect = RequestNotifier.getSelection(window.content); | 229 if (window.content) |
| 230 treeView.itemToSelect = RequestNotifier.getSelection(window.content); |
| 216 requestNotifier = new RequestNotifier(outerWindowID, function(item, scanComple
te) | 231 requestNotifier = new RequestNotifier(outerWindowID, function(item, scanComple
te) |
| 217 { | 232 { |
| 218 if (item) | 233 if (item) |
| 219 treeView.addItem(item, scanComplete); | 234 treeView.addItem(item, scanComplete); |
| 220 }); | 235 }); |
| 221 cacheStorage = null; | 236 cacheStorage = null; |
| 222 } | 237 } |
| 223 | 238 |
| 224 // Fills a box with text splitting it up into multiple lines if necessary | 239 // Fills a box with text splitting it up into multiple lines if necessary |
| 225 function setMultilineContent(box, text, noRemove) | 240 function setMultilineContent(box, text, noRemove) |
| (...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 927 return filter.subscriptions.filter(s => !s.disabled).map(s => s.title).j
oin(", "); | 942 return filter.subscriptions.filter(s => !s.disabled).map(s => s.title).j
oin(", "); |
| 928 } | 943 } |
| 929 else | 944 else |
| 930 return this.data[row].location; | 945 return this.data[row].location; |
| 931 } | 946 } |
| 932 else { | 947 else { |
| 933 // Empty list, show dummy | 948 // Empty list, show dummy |
| 934 if (row > 0 || (col != "address" && col != "filter")) | 949 if (row > 0 || (col != "address" && col != "filter")) |
| 935 return ""; | 950 return ""; |
| 936 if (col == "filter") { | 951 if (col == "filter") { |
| 937 var filter = Policy.isWindowWhitelisted(window.content); | 952 var filter = Policy.isWhitelisted(contentLocation); |
| 938 return filter ? filter.text : ""; | 953 return filter ? filter.text : ""; |
| 939 } | 954 } |
| 940 | 955 |
| 941 return (Policy.isWindowWhitelisted(window.content) ? this.whitelistDummy :
this.itemsDummy); | 956 return (Policy.isWhitelisted(contentLocation) ? this.whitelistDummy : this
.itemsDummy); |
| 942 } | 957 } |
| 943 }, | 958 }, |
| 944 | 959 |
| 945 generateProperties: function(list, properties) | 960 generateProperties: function(list, properties) |
| 946 { | 961 { |
| 947 if (properties) | 962 if (properties) |
| 948 { | 963 { |
| 949 // Gecko 21 and below: we have an nsISupportsArray parameter, add atoms | 964 // Gecko 21 and below: we have an nsISupportsArray parameter, add atoms |
| 950 // to that. | 965 // to that. |
| 951 for (let i = 0; i < list.length; i++) | 966 for (let i = 0; i < list.length; i++) |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 991 else if (filter instanceof ElemHideFilter) | 1006 else if (filter instanceof ElemHideFilter) |
| 992 state = "state-hidden"; | 1007 state = "state-hidden"; |
| 993 else if (filter instanceof ElemHideException) | 1008 else if (filter instanceof ElemHideException) |
| 994 state = "state-hiddenexception"; | 1009 state = "state-hiddenexception"; |
| 995 } | 1010 } |
| 996 } | 1011 } |
| 997 else { | 1012 else { |
| 998 list.push("dummy-true"); | 1013 list.push("dummy-true"); |
| 999 | 1014 |
| 1000 state = "state-filtered"; | 1015 state = "state-filtered"; |
| 1001 if (this.data && Policy.isWindowWhitelisted(window.content)) | 1016 if (this.data && Policy.isWhitelisted(contentLocation)) |
| 1002 state = "state-whitelisted"; | 1017 state = "state-whitelisted"; |
| 1003 } | 1018 } |
| 1004 list.push(state); | 1019 list.push(state); |
| 1005 return this.generateProperties(list, properties); | 1020 return this.generateProperties(list, properties); |
| 1006 }, | 1021 }, |
| 1007 | 1022 |
| 1008 getCellProperties: function(row, col, properties) | 1023 getCellProperties: function(row, col, properties) |
| 1009 { | 1024 { |
| 1010 return this.getRowProperties(row, properties) + " " + this.getColumnProperti
es(col, properties); | 1025 return this.getRowProperties(row, properties) + " " + this.getColumnProperti
es(col, properties); |
| 1011 }, | 1026 }, |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1301 | 1316 |
| 1302 let col = {}; | 1317 let col = {}; |
| 1303 this.boxObject.getCellAt(x, y, {}, col, {}); | 1318 this.boxObject.getCellAt(x, y, {}, col, {}); |
| 1304 return (col.value ? col.value.id : null); | 1319 return (col.value ? col.value.id : null); |
| 1305 }, | 1320 }, |
| 1306 | 1321 |
| 1307 getDummyTooltip: function() { | 1322 getDummyTooltip: function() { |
| 1308 if (!this.data || this.data.length) | 1323 if (!this.data || this.data.length) |
| 1309 return null; | 1324 return null; |
| 1310 | 1325 |
| 1311 var filter = Policy.isWindowWhitelisted(window.content); | 1326 var filter = Policy.isWhitelisted(contentLocation); |
| 1312 if (filter) | 1327 if (filter) |
| 1313 return {tooltip: this.whitelistDummyTooltip, filter: filter.text}; | 1328 return {tooltip: this.whitelistDummyTooltip, filter: filter.text}; |
| 1314 else | 1329 else |
| 1315 return {tooltip: this.itemsDummyTooltip}; | 1330 return {tooltip: this.itemsDummyTooltip}; |
| 1316 }, | 1331 }, |
| 1317 | 1332 |
| 1318 invalidateItem: function(item) | 1333 invalidateItem: function(item) |
| 1319 { | 1334 { |
| 1320 let row = this.data.indexOf(item); | 1335 let row = this.data.indexOf(item); |
| 1321 if (row >= 0) | 1336 if (row >= 0) |
| 1322 this.boxObject.invalidateRow(row); | 1337 this.boxObject.invalidateRow(row); |
| 1323 } | 1338 } |
| 1324 } | 1339 } |
| OLD | NEW |