 Issue 29774573:
  Issue 6652 - Do not push to unconditional selectors array  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluscore/
    
  
    Issue 29774573:
  Issue 6652 - Do not push to unconditional selectors array  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluscore/| Index: lib/elemHide.js | 
| =================================================================== | 
| --- a/lib/elemHide.js | 
| +++ b/lib/elemHide.js | 
| @@ -58,16 +58,27 @@ | 
| /** | 
| * Lookup table, lists of element hiding exceptions by selector | 
| * @type {Map.<string,Filter>} | 
| */ | 
| let exceptions = new Map(); | 
| /** | 
| + * Returns a list of selectors that apply on each website unconditionally. | 
| + * @returns {string[]} | 
| + */ | 
| +function getUnconditionalSelectors() | 
| +{ | 
| + if (!unconditionalSelectors) | 
| + unconditionalSelectors = [...filterBySelector.keys()]; | 
| + return unconditionalSelectors; | 
| 
Manish Jethani
2018/05/08 17:15:15
Note that now that's this function is private to t
 | 
| +} | 
| + | 
| +/** | 
| * Container for element hiding filters | 
| * @class | 
| */ | 
| let ElemHide = exports.ElemHide = { | 
| /** | 
| * Removes all known filters | 
| */ | 
| clear() | 
| @@ -199,27 +210,16 @@ | 
| if (list[i].isActiveOnDomain(docDomain)) | 
| return list[i]; | 
| } | 
| return null; | 
| }, | 
| /** | 
| - * Returns a list of selectors that apply on each website unconditionally. | 
| - * @returns {string[]} | 
| - */ | 
| - getUnconditionalSelectors() | 
| - { | 
| - if (!unconditionalSelectors) | 
| - unconditionalSelectors = [...filterBySelector.keys()]; | 
| - return unconditionalSelectors.slice(); | 
| - }, | 
| - | 
| - /** | 
| * Constant used by getSelectorsForDomain to return all selectors applying to | 
| * a particular hostname. | 
| */ | 
| ALL_MATCHING: 0, | 
| /** | 
| * Constant used by getSelectorsForDomain to exclude selectors which apply to | 
| * all websites without exception. | 
| @@ -241,20 +241,22 @@ | 
| * ElemHide.SPECIFIC_ONLY. | 
| * @returns {string[]} | 
| * List of selectors. | 
| */ | 
| getSelectorsForDomain(domain, criteria) | 
| { | 
| let selectors = []; | 
| + let unconditionalSelectors = null; | 
| + | 
| if (typeof criteria == "undefined") | 
| criteria = ElemHide.ALL_MATCHING; | 
| if (criteria < ElemHide.NO_UNCONDITIONAL) | 
| - selectors = this.getUnconditionalSelectors(); | 
| + unconditionalSelectors = getUnconditionalSelectors(); | 
| let specificOnly = (criteria >= ElemHide.SPECIFIC_ONLY); | 
| let excluded = new Set(); | 
| let currentDomain = domain ? domain.toUpperCase() : ""; | 
| // This code is a performance hot-spot, which is why we've made certain | 
| // micro-optimisations. Please be careful before making changes. | 
| while (true) | 
| @@ -281,11 +283,14 @@ | 
| if (currentDomain == "") | 
| break; | 
| let nextDot = currentDomain.indexOf("."); | 
| currentDomain = nextDot == -1 ? "" : currentDomain.substr(nextDot + 1); | 
| } | 
| + if (unconditionalSelectors) | 
| + selectors = unconditionalSelectors.concat(selectors); | 
| + | 
| return selectors; | 
| } | 
| }; |