Left: | ||
Right: |
LEFT | RIGHT |
---|---|
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-present eyeo GmbH | 3 * Copyright (C) 2006-present 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 "use strict"; | 18 "use strict"; |
19 | 19 |
20 /** | 20 /** |
21 * @fileOverview Element hiding implementation. | 21 * @fileOverview Element hiding implementation. |
22 */ | 22 */ |
23 | 23 |
24 const {ElemHideException} = require("./filterClasses"); | 24 const {ElemHideException} = require("./filterClasses"); |
25 const {FilterNotifier} = require("./filterNotifier"); | 25 const {FilterNotifier} = require("./filterNotifier"); |
26 | 26 |
27 /** | 27 /** |
28 * Lookup table, filters by their associated key | 28 * Lookup table, filters by their associated key |
29 * @type {Filter[]} | 29 * @type {Filter[]} |
Manish Jethani
2018/04/06 12:44:09
I've updated some of the types here.
| |
30 */ | 30 */ |
31 let filterByKey = []; | 31 let filterByKey = []; |
32 | 32 |
33 /** | 33 /** |
34 * Lookup table, keys of the filters by filter | 34 * Lookup table, keys of the filters by filter |
35 * @type {Map.<Filter,number>} | 35 * @type {Map.<Filter,number>} |
Manish Jethani
2018/04/06 12:44:09
The key is in fact a number.
| |
36 */ | 36 */ |
37 let keyByFilter = new Map(); | 37 let keyByFilter = new Map(); |
38 | 38 |
39 /** | 39 /** |
40 * Nested lookup table, filter (or false if inactive) by filter key by domain. | 40 * Nested lookup table, filter (or false if inactive) by filter key by domain. |
41 * (Only contains filters that aren't unconditionally matched for all domains.) | 41 * (Only contains filters that aren't unconditionally matched for all domains.) |
42 * @type {Map.<string,Map.<number,(Filter|boolean)>>} | 42 * @type {Map.<string,Map.<number,(Filter|boolean)>>} |
43 */ | 43 */ |
44 let filtersByDomain = new Map(); | 44 let filtersByDomain = new Map(); |
45 | 45 |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
289 }, | 289 }, |
290 | 290 |
291 /** | 291 /** |
292 * Returns a list of filter keys for selectors which apply to all websites | 292 * Returns a list of filter keys for selectors which apply to all websites |
293 * without exception. | 293 * without exception. |
294 * @returns {number[]} | 294 * @returns {number[]} |
295 */ | 295 */ |
296 getUnconditionalFilterKeys() | 296 getUnconditionalFilterKeys() |
297 { | 297 { |
298 if (!unconditionalFilterKeys) | 298 if (!unconditionalFilterKeys) |
299 unconditionalFilterKeys = [...filterKeyBySelector.values()]; | 299 { |
300 let selectors = this.getUnconditionalSelectors(); | |
301 unconditionalFilterKeys = []; | |
302 for (let selector of selectors) | |
303 unconditionalFilterKeys.push(filterKeyBySelector.get(selector)); | |
304 } | |
300 return unconditionalFilterKeys.slice(); | 305 return unconditionalFilterKeys.slice(); |
301 }, | 306 }, |
302 | 307 |
303 | 308 |
304 /** | 309 /** |
305 * Constant used by getSelectorsForDomain to return all selectors applying to | 310 * Constant used by getSelectorsForDomain to return all selectors applying to |
306 * a particular hostname. | 311 * a particular hostname. |
307 */ | 312 */ |
308 ALL_MATCHING: 0, | 313 ALL_MATCHING: 0, |
309 | 314 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
379 | 384 |
380 let nextDot = currentDomain.indexOf("."); | 385 let nextDot = currentDomain.indexOf("."); |
381 currentDomain = nextDot == -1 ? "" : currentDomain.substr(nextDot + 1); | 386 currentDomain = nextDot == -1 ? "" : currentDomain.substr(nextDot + 1); |
382 } | 387 } |
383 | 388 |
384 if (provideFilterKeys) | 389 if (provideFilterKeys) |
385 return [selectors, filterKeys]; | 390 return [selectors, filterKeys]; |
386 return selectors; | 391 return selectors; |
387 } | 392 } |
388 }; | 393 }; |
LEFT | RIGHT |