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

Unified Diff: chrome/content/elemHideEmulation.js

Issue 29372676: [adblockpluscore] Issue 4825 - Let ElemHideEmulation associate selector and filter when calling add… (Closed)
Patch Set: Removed unnecessary variable and use let instead of var Created Feb. 7, 2017, 3 p.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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/content/elemHideEmulation.js
diff --git a/chrome/content/elemHideEmulation.js b/chrome/content/elemHideEmulation.js
index 95a4c5d4ba314ce0c5697c626e52e62edbde574c..3e000229a29b1c49a6a5067e045728656c4b416c 100644
--- a/chrome/content/elemHideEmulation.js
+++ b/chrome/content/elemHideEmulation.js
@@ -73,33 +73,37 @@ ElemHideEmulation.prototype = {
}
},
- findSelectors: function(stylesheet, selectors, filters)
+ findSelectors: function(stylesheet, filters)
{
// Explicitly ignore third-party stylesheets to ensure consistent behavior
// between Firefox and Chrome.
if (!this.isSameOrigin(stylesheet))
return;
- var rules = stylesheet.cssRules;
+ let rules = stylesheet.cssRules;
if (!rules)
return;
- for (var i = 0; i < rules.length; i++)
+ for (let rule of rules)
{
- var rule = rules[i];
if (rule.type != rule.STYLE_RULE)
continue;
- var style = this.stringifyStyle(rule.style);
- for (var j = 0; j < this.patterns.length; j++)
+ let style = this.stringifyStyle(rule.style);
+
Sebastian Noack 2017/02/07 15:37:57 Nit: The blank line added here is unrelated at lea
wspee 2017/02/09 08:40:34 Done.
+ for (let pattern of this.patterns)
{
- var pattern = this.patterns[j];
if (pattern.regexp.test(style))
{
- var subSelectors = splitSelector(rule.selectorText);
- for (var k = 0; k < subSelectors.length; k++)
- selectors.push(pattern.prefix + subSelectors[k] + pattern.suffix);
- filters[pattern.text] = true;
+ let selectors = filters.get(pattern.text);
+ if (!selectors)
+ {
+ selectors = [];
+ filters.set(pattern.text, selectors);
+ }
+
+ for (let subSelector of splitSelector(rule.selectorText))
+ selectors.push(pattern.prefix + subSelector + pattern.suffix);
}
}
}
@@ -107,11 +111,10 @@ ElemHideEmulation.prototype = {
addSelectors: function(stylesheets)
{
- var selectors = [];
- var filters = {};
- for (var i = 0; i < stylesheets.length; i++)
- this.findSelectors(stylesheets[i], selectors, filters);
- this.addSelectorsFunc(selectors, Object.keys(filters));
+ let filters = new Map();
+ for (let stylesheet of stylesheets)
+ this.findSelectors(stylesheet, filters);
+ this.addSelectorsFunc(filters);
Sebastian Noack 2017/02/07 15:37:57 I just realized, the implications for when this fu
Sebastian Noack 2017/02/07 15:59:56 Another advantage of this approach is, that the AP
Sebastian Noack 2017/02/08 07:12:29 Perhaps even better, just use two arrays (instead
wspee 2017/02/09 08:40:34 Done.
},
onLoad: function(event)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld