Index: lib/content/elemHideEmulation.js |
=================================================================== |
--- a/lib/content/elemHideEmulation.js |
+++ b/lib/content/elemHideEmulation.js |
@@ -599,16 +599,23 @@ |
} |
function ElemHideEmulation(addSelectorsFunc, hideElemsFunc) |
{ |
this.document = document; |
this.addSelectorsFunc = addSelectorsFunc; |
this.hideElemsFunc = hideElemsFunc; |
this.observer = new MutationObserver(this.observe.bind(this)); |
+ |
+ // This flag is supposed to indicate whether we should prefer setting the |
+ // style attribute of the element over using CSS selectors. It is set by the |
+ // web extension if the tabs.removeCSS API is available (Firefox 53+). But |
+ // because of issues with performance (see #6422), we are ignoring the value |
+ // of this flag for now; we always set the style attribute. |
+ // https://issues.adblockplus.org/ticket/6504#comment:9 |
this.useInlineStyles = true; |
} |
ElemHideEmulation.prototype = { |
isSameOrigin(stylesheet) |
{ |
try |
{ |
@@ -801,28 +808,20 @@ |
generator = evaluate(pattern.selectors, 0, "", |
this.document, cssStyles, evaluationTargets); |
} |
for (let selector of generator) |
{ |
if (selector != null) |
{ |
- if (!this.useInlineStyles) |
+ for (let element of this.document.querySelectorAll(selector)) |
{ |
- selectors.push(selector); |
- selectorFilters.push(pattern.text); |
- } |
- else |
- { |
- for (let element of this.document.querySelectorAll(selector)) |
- { |
- elements.push(element); |
- elementFilters.push(pattern.text); |
- } |
+ elements.push(element); |
+ elementFilters.push(pattern.text); |
} |
} |
if (performance.now() - cycleStart > MAX_SYNCHRONOUS_PROCESSING_TIME) |
{ |
setTimeout(processPatterns, 0); |
return; |
} |
} |