| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 */ | 29 */ |
| 30 function positionInParent(node) | 30 function positionInParent(node) |
| 31 { | 31 { |
| 32 let {children} = node.parentNode; | 32 let {children} = node.parentNode; |
| 33 for (let i = 0; i < children.length; i++) | 33 for (let i = 0; i < children.length; i++) |
| 34 if (children[i] == node) | 34 if (children[i] == node) |
| 35 return i + 1; | 35 return i + 1; |
| 36 return 0; | 36 return 0; |
| 37 } | 37 } |
| 38 | 38 |
| 39 function makeSelector(node, selector) | 39 function makeSelector(node, selector = "") |
| 40 { | 40 { |
| 41 if (node == null) | 41 if (node == null) |
| 42 return null; | 42 return null; |
| 43 if (!node.parentElement) | 43 if (!node.parentElement) |
| 44 { | 44 { |
| 45 let newSelector = ":root"; | 45 let newSelector = ":root"; |
| 46 if (selector) | 46 if (selector) |
| 47 newSelector += " > " + selector; | 47 newSelector += " > " + selector; |
| 48 return newSelector; | 48 return newSelector; |
| 49 } | 49 } |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 get maybeDependsOnAttributes() | 260 get maybeDependsOnAttributes() |
| 261 { | 261 { |
| 262 return this._innerSelectors.some( | 262 return this._innerSelectors.some( |
| 263 selector => selector.maybeDependsOnAttributes | 263 selector => selector.maybeDependsOnAttributes |
| 264 ); | 264 ); |
| 265 }, | 265 }, |
| 266 | 266 |
| 267 *getSelectors(prefix, subtree, styles) | 267 *getSelectors(prefix, subtree, styles) |
| 268 { | 268 { |
| 269 for (let element of this.getElements(prefix, subtree, styles)) | 269 for (let element of this.getElements(prefix, subtree, styles)) |
| 270 yield [makeSelector(element, ""), element]; | 270 yield [makeSelector(element), element]; |
| 271 }, | 271 }, |
| 272 | 272 |
| 273 /** | 273 /** |
| 274 * Generator function returning selected elements. | 274 * Generator function returning selected elements. |
| 275 * @param {string} prefix the prefix for the selector. | 275 * @param {string} prefix the prefix for the selector. |
| 276 * @param {Node} subtree the subtree we work on. | 276 * @param {Node} subtree the subtree we work on. |
| 277 * @param {StringifiedStyle[]} styles the stringified style objects. | 277 * @param {StringifiedStyle[]} styles the stringified style objects. |
| 278 */ | 278 */ |
| 279 *getElements(prefix, subtree, styles) | 279 *getElements(prefix, subtree, styles) |
| 280 { | 280 { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 304 this._regexp = makeRegExpParameter(textContent); | 304 this._regexp = makeRegExpParameter(textContent); |
| 305 } | 305 } |
| 306 | 306 |
| 307 ContainsSelector.prototype = { | 307 ContainsSelector.prototype = { |
| 308 requiresHiding: true, | 308 requiresHiding: true, |
| 309 dependsOnCharacterData: true, | 309 dependsOnCharacterData: true, |
| 310 | 310 |
| 311 *getSelectors(prefix, subtree, styles) | 311 *getSelectors(prefix, subtree, styles) |
| 312 { | 312 { |
| 313 for (let element of this.getElements(prefix, subtree, styles)) | 313 for (let element of this.getElements(prefix, subtree, styles)) |
| 314 yield [makeSelector(element, ""), subtree]; | 314 yield [makeSelector(element), subtree]; |
| 315 }, | 315 }, |
| 316 | 316 |
| 317 *getElements(prefix, subtree, styles) | 317 *getElements(prefix, subtree, styles) |
| 318 { | 318 { |
| 319 let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ? | 319 let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ? |
| 320 prefix + "*" : prefix; | 320 prefix + "*" : prefix; |
| 321 | 321 |
| 322 let elements = scopedQuerySelectorAll(subtree, actualPrefix); | 322 let elements = scopedQuerySelectorAll(subtree, actualPrefix); |
| 323 if (elements) | 323 if (elements) |
| 324 { | 324 { |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 characterData: shouldObserveCharacterData(this.patterns), | 712 characterData: shouldObserveCharacterData(this.patterns), |
| 713 subtree: true | 713 subtree: true |
| 714 } | 714 } |
| 715 ); | 715 ); |
| 716 this.document.addEventListener("load", this.onLoad.bind(this), true); | 716 this.document.addEventListener("load", this.onLoad.bind(this), true); |
| 717 } | 717 } |
| 718 } | 718 } |
| 719 }; | 719 }; |
| 720 | 720 |
| 721 exports.ElemHideEmulation = ElemHideEmulation; | 721 exports.ElemHideEmulation = ElemHideEmulation; |
| OLD | NEW |