| OLD | NEW |
| 1 // We are currently limited to ECMAScript 5 in this file, because it is being | 1 // We are currently limited to ECMAScript 5 in this file, because it is being |
| 2 // used in the browser tests. See https://issues.adblockplus.org/ticket/4796 | 2 // used in the browser tests. See https://issues.adblockplus.org/ticket/4796 |
| 3 | 3 |
| 4 var propertySelectorRegExp = /\[\-abp\-properties=(["'])([^"']+)\1\]/; | 4 var propertySelectorRegExp = /\[\-abp\-properties=(["'])([^"']+)\1\]/; |
| 5 | 5 |
| 6 function splitSelector(selector) | 6 function splitSelector(selector) |
| 7 { | 7 { |
| 8 if (selector.indexOf(",") == -1) | 8 if (selector.indexOf(",") == -1) |
| 9 return [selector]; | 9 return [selector]; |
| 10 | 10 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 } | 76 } |
| 77 }, | 77 }, |
| 78 | 78 |
| 79 findSelectors: function(stylesheet, selectors, filters) | 79 findSelectors: function(stylesheet, selectors, filters) |
| 80 { | 80 { |
| 81 // Explicitly ignore third-party stylesheets to ensure consistent behavior | 81 // Explicitly ignore third-party stylesheets to ensure consistent behavior |
| 82 // between Firefox and Chrome. | 82 // between Firefox and Chrome. |
| 83 if (!this.isSameOrigin(stylesheet)) | 83 if (!this.isSameOrigin(stylesheet)) |
| 84 return; | 84 return; |
| 85 | 85 |
| 86 let rules = stylesheet.cssRules; | 86 var rules = stylesheet.cssRules; |
| 87 if (!rules) | 87 if (!rules) |
| 88 return; | 88 return; |
| 89 | 89 |
| 90 for (let rule of rules) | 90 for (var i = 0; i < rules.length; i++) |
| 91 { | 91 { |
| 92 var rule = rules[i]; |
| 92 if (rule.type != rule.STYLE_RULE) | 93 if (rule.type != rule.STYLE_RULE) |
| 93 continue; | 94 continue; |
| 94 | 95 |
| 95 let style = this.stringifyStyle(rule.style); | 96 var style = this.stringifyStyle(rule.style); |
| 96 for (let pattern of this.patterns) | 97 for (var j = 0; j < this.patterns.length; j++) |
| 97 { | 98 { |
| 99 var pattern = this.patterns[j]; |
| 98 if (pattern.regexp.test(style)) | 100 if (pattern.regexp.test(style)) |
| 99 { | 101 { |
| 100 let subSelectors = splitSelector(rule.selectorText); | 102 var subSelectors = splitSelector(rule.selectorText); |
| 101 for (let subSelector of subSelectors) | 103 for (var k = 0; k < subSelectors.length; k++) |
| 102 { | 104 { |
| 105 var subSelector = subSelectors[k]; |
| 103 selectors.push(pattern.prefix + subSelector + pattern.suffix); | 106 selectors.push(pattern.prefix + subSelector + pattern.suffix); |
| 104 filters.push(pattern.text); | 107 filters.push(pattern.text); |
| 105 } | 108 } |
| 106 } | 109 } |
| 107 } | 110 } |
| 108 } | 111 } |
| 109 }, | 112 }, |
| 110 | 113 |
| 111 addSelectors: function(stylesheets) | 114 addSelectors: function(stylesheets) |
| 112 { | 115 { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 158 |
| 156 if (this.patterns.length > 0) | 159 if (this.patterns.length > 0) |
| 157 { | 160 { |
| 158 var document = this.window.document; | 161 var document = this.window.document; |
| 159 this.addSelectors(document.styleSheets); | 162 this.addSelectors(document.styleSheets); |
| 160 document.addEventListener("load", this.onLoad.bind(this), true); | 163 document.addEventListener("load", this.onLoad.bind(this), true); |
| 161 } | 164 } |
| 162 }.bind(this)); | 165 }.bind(this)); |
| 163 } | 166 } |
| 164 }; | 167 }; |
| OLD | NEW |