Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/content/elemHideEmulation.js

Issue 29556808: Issue 5797 - Removed obsolete arguments from ElemHideEmulation constructor (Closed)
Patch Set: Created Sept. 27, 2017, 12:18 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/content/elemHideEmulation.js
===================================================================
--- a/lib/content/elemHideEmulation.js
+++ b/lib/content/elemHideEmulation.js
@@ -302,14 +302,12 @@
!pattern.selectors.some(s => s.requiresHiding);
}
-function ElemHideEmulation(window, getFiltersFunc, addSelectorsFunc,
- hideElemsFunc)
+function ElemHideEmulation(addSelectorsFunc, hideElemsFunc)
{
- this.window = window;
- this.getFiltersFunc = getFiltersFunc;
+ this.document = document;
Sebastian Noack 2017/09/27 00:20:45 We still need a way to mock the document the eleme
this.addSelectorsFunc = addSelectorsFunc;
this.hideElemsFunc = hideElemsFunc;
- this.observer = new window.MutationObserver(this.observe.bind(this));
+ this.observer = new MutationObserver(this.observe.bind(this));
}
ElemHideEmulation.prototype = {
@@ -317,7 +315,7 @@
{
try
{
- return new URL(stylesheet.href).origin == this.window.location.origin;
+ return new URL(stylesheet.href).origin == this.document.location.origin;
}
catch (e)
{
@@ -348,10 +346,9 @@
let content = parseSelectorContent(selector, startIndex);
if (!content)
{
- this.window.console.error(
- new SyntaxError("Failed to parse Adblock Plus " +
- `selector ${selector} ` +
- "due to unmatched parentheses."));
+ console.error(new SyntaxError("Failed to parse Adblock Plus " +
+ `selector ${selector} ` +
+ "due to unmatched parentheses."));
return null;
}
if (match[1] == "properties")
@@ -368,10 +365,9 @@
else
{
// this is an error, can't parse selector.
- this.window.console.error(
- new SyntaxError("Failed to parse Adblock Plus " +
- `selector ${selector}, invalid ` +
- `pseudo-class :-abp-${match[1]}().`));
+ console.error(new SyntaxError("Failed to parse Adblock Plus " +
+ `selector ${selector}, invalid ` +
+ `pseudo-class :-abp-${match[1]}().`));
return null;
}
@@ -383,10 +379,9 @@
if (selectors.length == 1 && selectors[0] instanceof ContainsSelector)
{
- this.window.console.error(
- new SyntaxError("Failed to parse Adblock Plus " +
- `selector ${selector}, can't ` +
- "have a lonely :-abp-contains()."));
+ console.error(new SyntaxError("Failed to parse Adblock Plus " +
+ `selector ${selector}, can't ` +
+ "have a lonely :-abp-contains()."));
return null;
}
return selectors;
@@ -414,7 +409,7 @@
let stylesheetOnlyChange = !!stylesheets;
if (!stylesheets)
- stylesheets = this.window.document.styleSheets;
+ stylesheets = this.document.styleSheets;
// Chrome < 51 doesn't have an iterable StyleSheetList
// https://issues.adblockplus.org/ticket/5381
@@ -442,15 +437,13 @@
}
}
- let {document} = this.window;
-
let patterns = this.patterns.slice();
let pattern = null;
let generator = null;
let processPatterns = () =>
{
- let cycleStart = this.window.performance.now();
+ let cycleStart = performance.now();
if (!pattern)
{
@@ -471,7 +464,8 @@
pattern = null;
return processPatterns();
}
- generator = evaluate(pattern.selectors, 0, "", document, cssStyles);
+ generator = evaluate(pattern.selectors, 0, "",
+ this.document, cssStyles);
}
for (let selector of generator)
{
@@ -484,17 +478,16 @@
}
else
{
- for (let element of document.querySelectorAll(selector))
+ for (let element of this.document.querySelectorAll(selector))
{
elements.push(element);
elementFilters.push(pattern.text);
}
}
}
- if (this.window.performance.now() -
- cycleStart > MAX_SYNCHRONOUS_PROCESSING_TIME)
+ if (performance.now() - cycleStart > MAX_SYNCHRONOUS_PROCESSING_TIME)
{
- this.window.setTimeout(processPatterns, 0);
+ setTimeout(processPatterns, 0);
return;
}
}
@@ -531,7 +524,7 @@
{
let completion = () =>
{
- this._lastInvocation = this.window.performance.now();
+ this._lastInvocation = performance.now();
this._filteringInProgress = false;
if (this._scheduledProcessing)
{
@@ -552,19 +545,17 @@
{
this._scheduledProcessing = {stylesheets};
}
- else if (this.window.performance.now() -
- this._lastInvocation < MIN_INVOCATION_INTERVAL)
+ else if (performance.now() - this._lastInvocation < MIN_INVOCATION_INTERVAL)
{
this._scheduledProcessing = {stylesheets};
- this.window.setTimeout(() =>
+ setTimeout(() =>
{
let newStylesheets = this._scheduledProcessing.stylesheets;
this._filteringInProgress = true;
this._scheduledProcessing = null;
this._addSelectors(newStylesheets, completion);
},
- MIN_INVOCATION_INTERVAL -
- (this.window.performance.now() - this._lastInvocation));
+ MIN_INVOCATION_INTERVAL - (performance.now() - this._lastInvocation));
}
else
{
@@ -585,34 +576,30 @@
this.queueFiltering();
},
- apply()
+ apply(patterns)
{
- this.getFiltersFunc(patterns =>
+ this.patterns = [];
+ for (let pattern of patterns)
{
- this.patterns = [];
- for (let pattern of patterns)
- {
- let selectors = this.parseSelector(pattern.selector);
- if (selectors != null && selectors.length > 0)
- this.patterns.push({selectors, text: pattern.text});
- }
+ let selectors = this.parseSelector(pattern.selector);
+ if (selectors != null && selectors.length > 0)
+ this.patterns.push({selectors, text: pattern.text});
+ }
- if (this.patterns.length > 0)
- {
- let {document} = this.window;
- this.queueFiltering();
- this.observer.observe(
- document,
- {
- childList: true,
- attributes: true,
- characterData: true,
- subtree: true
- }
- );
- document.addEventListener("load", this.onLoad.bind(this), true);
- }
- });
+ if (this.patterns.length > 0)
+ {
+ this.queueFiltering();
+ this.observer.observe(
+ this.document,
+ {
+ childList: true,
+ attributes: true,
+ characterData: true,
+ subtree: true
+ }
+ );
+ this.document.addEventListener("load", this.onLoad.bind(this), true);
+ }
}
};

Powered by Google App Engine
This is Rietveld