| Left: | ||
| Right: |
| 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 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 598 return patterns.some(pattern => pattern.maybeDependsOnAttributes); | 598 return patterns.some(pattern => pattern.maybeDependsOnAttributes); |
| 599 } | 599 } |
| 600 | 600 |
| 601 function shouldObserveCharacterData(patterns) | 601 function shouldObserveCharacterData(patterns) |
| 602 { | 602 { |
| 603 return patterns.some(pattern => pattern.dependsOnCharacterData); | 603 return patterns.some(pattern => pattern.dependsOnCharacterData); |
| 604 } | 604 } |
| 605 | 605 |
| 606 class ElemHideEmulation | 606 class ElemHideEmulation |
| 607 { | 607 { |
| 608 constructor(addSelectorsFunc, hideElemsFunc) | 608 constructor(addSelectorsFunc, hideElemsFunc) |
|
Sebastian Noack
2018/09/18 21:29:47
There are further optimizations and simplification
Manish Jethani
2018/09/19 09:43:32
At this point I'm really not sure how this is goin
| |
| 609 { | 609 { |
| 610 this._filteringInProgress = false; | 610 this._filteringInProgress = false; |
| 611 this._lastInvocation = -MIN_INVOCATION_INTERVAL; | 611 this._lastInvocation = -MIN_INVOCATION_INTERVAL; |
| 612 this._scheduledProcessing = null; | 612 this._scheduledProcessing = null; |
| 613 | 613 |
| 614 this.document = document; | 614 this.document = document; |
| 615 this.addSelectorsFunc = addSelectorsFunc; | |
| 616 this.hideElemsFunc = hideElemsFunc; | 615 this.hideElemsFunc = hideElemsFunc; |
| 617 this.observer = new MutationObserver(this.observe.bind(this)); | 616 this.observer = new MutationObserver(this.observe.bind(this)); |
| 618 } | 617 } |
| 619 | 618 |
| 620 isSameOrigin(stylesheet) | 619 isSameOrigin(stylesheet) |
| 621 { | 620 { |
| 622 try | 621 try |
| 623 { | 622 { |
| 624 return new URL(stylesheet.href).origin == this.document.location.origin; | 623 return new URL(stylesheet.href).origin == this.document.location.origin; |
| 625 } | 624 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 708 * @param {function} [done] | 707 * @param {function} [done] |
| 709 * Callback to call when done. | 708 * Callback to call when done. |
| 710 */ | 709 */ |
| 711 _addSelectors(stylesheets, mutations, done) | 710 _addSelectors(stylesheets, mutations, done) |
| 712 { | 711 { |
| 713 if (testInfo) | 712 if (testInfo) |
| 714 testInfo.lastProcessedElements.clear(); | 713 testInfo.lastProcessedElements.clear(); |
| 715 | 714 |
| 716 let patterns = filterPatterns(this.patterns, {stylesheets, mutations}); | 715 let patterns = filterPatterns(this.patterns, {stylesheets, mutations}); |
| 717 | 716 |
| 718 let selectors = []; | |
| 719 let selectorFilters = []; | |
| 720 | |
| 721 let elements = []; | 717 let elements = []; |
| 722 let elementFilters = []; | 718 let elementFilters = []; |
| 723 | 719 |
| 724 let cssStyles = []; | 720 let cssStyles = []; |
| 725 | 721 |
| 726 // If neither any style sheets nor any DOM mutations have been specified, | 722 // If neither any style sheets nor any DOM mutations have been specified, |
| 727 // do full processing. | 723 // do full processing. |
| 728 if (!stylesheets && !mutations) | 724 if (!stylesheets && !mutations) |
| 729 stylesheets = this.document.styleSheets; | 725 stylesheets = this.document.styleSheets; |
| 730 | 726 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 776 let generator = null; | 772 let generator = null; |
| 777 | 773 |
| 778 let processPatterns = () => | 774 let processPatterns = () => |
| 779 { | 775 { |
| 780 let cycleStart = performance.now(); | 776 let cycleStart = performance.now(); |
| 781 | 777 |
| 782 if (!pattern) | 778 if (!pattern) |
| 783 { | 779 { |
| 784 if (!patterns.length) | 780 if (!patterns.length) |
| 785 { | 781 { |
| 786 if (selectors.length > 0) | |
| 787 this.addSelectorsFunc(selectors, selectorFilters); | |
| 788 if (elements.length > 0) | 782 if (elements.length > 0) |
| 789 this.hideElemsFunc(elements, elementFilters); | 783 this.hideElemsFunc(elements, elementFilters); |
| 790 if (typeof done == "function") | 784 if (typeof done == "function") |
| 791 done(); | 785 done(); |
| 792 return; | 786 return; |
| 793 } | 787 } |
| 794 | 788 |
| 795 pattern = patterns.shift(); | 789 pattern = patterns.shift(); |
| 796 | 790 |
| 797 let evaluationTargets = targets; | 791 let evaluationTargets = targets; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 971 characterData: shouldObserveCharacterData(this.patterns), | 965 characterData: shouldObserveCharacterData(this.patterns), |
| 972 subtree: true | 966 subtree: true |
| 973 } | 967 } |
| 974 ); | 968 ); |
| 975 this.document.addEventListener("load", this.onLoad.bind(this), true); | 969 this.document.addEventListener("load", this.onLoad.bind(this), true); |
| 976 } | 970 } |
| 977 } | 971 } |
| 978 } | 972 } |
| 979 | 973 |
| 980 exports.ElemHideEmulation = ElemHideEmulation; | 974 exports.ElemHideEmulation = ElemHideEmulation; |
| OLD | NEW |