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 |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
300 | 300 |
301 let filtersByDomain = this._filterDomainMapsByKeyword.get(keyword); | 301 let filtersByDomain = this._filterDomainMapsByKeyword.get(keyword); |
302 if (filtersByDomain) | 302 if (filtersByDomain) |
303 { | 303 { |
304 let domains = filter.domains || defaultDomains; | 304 let domains = filter.domains || defaultDomains; |
305 for (let domain of domains.keys()) | 305 for (let domain of domains.keys()) |
306 { | 306 { |
307 let map = filtersByDomain.get(domain); | 307 let map = filtersByDomain.get(domain); |
308 if (map) | 308 if (map) |
309 { | 309 { |
310 if (map.size > 1 || map instanceof Map) | 310 if (map.size > 1 || map instanceof Map) |
Sebastian Noack
2019/02/06 16:30:58
In which scenario would "map" not be a Map object,
Manish Jethani
2019/02/06 19:25:05
It's a hack.
The filter object doubles up as a fa
| |
311 { | 311 { |
312 map.delete(filter); | 312 map.delete(filter); |
313 | 313 |
314 if (map.size == 0) | 314 if (map.size == 0) |
315 filtersByDomain.delete(domain); | 315 filtersByDomain.delete(domain); |
316 } | 316 } |
317 else if (filter == map) | 317 else if (filter == map) |
318 { | 318 { |
319 filtersByDomain.delete(domain); | 319 filtersByDomain.delete(domain); |
320 } | 320 } |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
479 * matching filters to the list; if omitted, the function directly returns | 479 * matching filters to the list; if omitted, the function directly returns |
480 * the first matching filter. | 480 * the first matching filter. |
481 * @returns {?Filter} | 481 * @returns {?Filter} |
482 * @protected | 482 * @protected |
483 */ | 483 */ |
484 checkEntryMatch(keyword, location, typeMask, docDomain, thirdParty, sitekey, | 484 checkEntryMatch(keyword, location, typeMask, docDomain, thirdParty, sitekey, |
485 specificOnly, collection) | 485 specificOnly, collection) |
486 { | 486 { |
487 // We need to skip the simple (location-only) filters if the type mask does | 487 // We need to skip the simple (location-only) filters if the type mask does |
488 // not contain any default content types. | 488 // not contain any default content types. |
489 if ((typeMask & DEFAULT_TYPES) != 0) | 489 if (!specificOnly && (typeMask & DEFAULT_TYPES) != 0) |
490 { | 490 { |
491 let filter = this._checkEntryMatchSimple(keyword, location, typeMask, | 491 let filter = this._checkEntryMatchSimple(keyword, location, typeMask, |
492 docDomain, thirdParty, sitekey, | 492 docDomain, thirdParty, sitekey, |
493 specificOnly, collection); | 493 specificOnly, collection); |
494 if (filter) | 494 if (filter) |
495 return filter; | 495 return filter; |
496 } | 496 } |
497 | 497 |
498 // If the type mask contains a non-default type (first condition) and it is | 498 // If the type mask contains a non-default type (first condition) and it is |
499 // the only type in the mask (second condition), we can use the | 499 // the only type in the mask (second condition), we can use the |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
805 | 805 |
806 return result; | 806 return result; |
807 } | 807 } |
808 | 808 |
809 /** | 809 /** |
810 * Tests whether the URL is whitelisted | 810 * Tests whether the URL is whitelisted |
811 * @see Matcher#matchesAny | 811 * @see Matcher#matchesAny |
812 * @inheritdoc | 812 * @inheritdoc |
813 * @returns {boolean} | 813 * @returns {boolean} |
814 */ | 814 */ |
815 isWhitelisted(location, typeMask, docDomain, thirdParty, sitekey, | 815 isWhitelisted(location, typeMask, docDomain, thirdParty, sitekey) |
816 specificOnly) | |
817 { | 816 { |
818 return !!this._whitelist.matchesAny(location, typeMask, docDomain, | 817 return !!this._whitelist.matchesAny(location, typeMask, docDomain, |
819 thirdParty, sitekey, specificOnly); | 818 thirdParty, sitekey); |
820 } | 819 } |
821 } | 820 } |
822 | 821 |
823 exports.CombinedMatcher = CombinedMatcher; | 822 exports.CombinedMatcher = CombinedMatcher; |
824 | 823 |
825 /** | 824 /** |
826 * Shared {@link CombinedMatcher} instance that should usually be used. | 825 * Shared {@link CombinedMatcher} instance that should usually be used. |
827 * @type {CombinedMatcher} | 826 * @type {CombinedMatcher} |
828 */ | 827 */ |
829 let defaultMatcher = new CombinedMatcher(); | 828 let defaultMatcher = new CombinedMatcher(); |
830 | 829 |
831 exports.defaultMatcher = defaultMatcher; | 830 exports.defaultMatcher = defaultMatcher; |
LEFT | RIGHT |