Left: | ||
Right: |
LEFT | RIGHT |
---|---|
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 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
611 let rules; | 611 let rules; |
612 try | 612 try |
613 { | 613 { |
614 rules = stylesheet.cssRules; | 614 rules = stylesheet.cssRules; |
615 } | 615 } |
616 catch (e) | 616 catch (e) |
617 { | 617 { |
618 // On Firefox, there is a chance that an InvalidAccessError | 618 // On Firefox, there is a chance that an InvalidAccessError |
619 // get thrown when accessing cssRules. Just skip the stylesheet | 619 // get thrown when accessing cssRules. Just skip the stylesheet |
620 // in that case. | 620 // in that case. |
621 // See https://issues.adblockplus.org/ticket/6382 | 621 // See https://searchfox.org/mozilla-central/rev/f65d7528e34ef1a7665b4a1 a7b7cdb1388fcd3aa/layout/style/StyleSheet.cpp#699 |
622 continue; | 622 continue; |
kzar
2018/04/18 16:12:30
I wonder if we should check that the exception rea
hub
2018/04/18 18:48:23
The intent here is to catch the exception to not i
kzar
2018/04/19 07:29:29
Acknowledged.
| |
623 } | 623 } |
624 | 624 |
625 if (!rules) | 625 if (!rules) |
626 continue; | 626 continue; |
627 | 627 |
628 for (let rule of rules) | 628 for (let rule of rules) |
629 { | 629 { |
630 if (rule.type != rule.STYLE_RULE) | 630 if (rule.type != rule.STYLE_RULE) |
631 continue; | 631 continue; |
632 | 632 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
729 this.queueFiltering(params.stylesheets, params.mutations); | 729 this.queueFiltering(params.stylesheets, params.mutations); |
730 } | 730 } |
731 }; | 731 }; |
732 | 732 |
733 if (this._scheduledProcessing) | 733 if (this._scheduledProcessing) |
734 { | 734 { |
735 if (!stylesheets && !mutations) | 735 if (!stylesheets && !mutations) |
736 { | 736 { |
737 this._scheduledProcessing = {}; | 737 this._scheduledProcessing = {}; |
738 } | 738 } |
739 else | 739 else if (this._scheduledProcessing.stylesheets || |
740 this._scheduledProcessing.mutations) | |
740 { | 741 { |
741 if (stylesheets) | 742 if (stylesheets) |
742 { | 743 { |
743 if (!this._scheduledProcessing.stylesheets) | 744 if (!this._scheduledProcessing.stylesheets) |
744 this._scheduledProcessing.stylesheets = []; | 745 this._scheduledProcessing.stylesheets = []; |
745 this._scheduledProcessing.stylesheets.push(...stylesheets); | 746 this._scheduledProcessing.stylesheets.push(...stylesheets); |
746 } | 747 } |
747 if (mutations) | 748 if (mutations) |
748 { | 749 { |
749 if (!this._scheduledProcessing.mutations) | 750 if (!this._scheduledProcessing.mutations) |
(...skipping 16 matching lines...) Expand all Loading... | |
766 this._scheduledProcessing = null; | 767 this._scheduledProcessing = null; |
767 this._addSelectors(params.stylesheets, params.mutations, completion); | 768 this._addSelectors(params.stylesheets, params.mutations, completion); |
768 }, | 769 }, |
769 MIN_INVOCATION_INTERVAL - (performance.now() - this._lastInvocation)); | 770 MIN_INVOCATION_INTERVAL - (performance.now() - this._lastInvocation)); |
770 } | 771 } |
771 else if (this.document.readyState == "loading") | 772 else if (this.document.readyState == "loading") |
772 { | 773 { |
773 this._scheduledProcessing = {stylesheets, mutations}; | 774 this._scheduledProcessing = {stylesheets, mutations}; |
774 let handler = () => | 775 let handler = () => |
775 { | 776 { |
776 document.removeEventListener("DOMContentLoaded", handler); | 777 this.document.removeEventListener("DOMContentLoaded", handler); |
777 let params = Object.assign({}, this._scheduledProcessing); | 778 let params = Object.assign({}, this._scheduledProcessing); |
778 this._filteringInProgress = true; | 779 this._filteringInProgress = true; |
779 this._scheduledProcessing = null; | 780 this._scheduledProcessing = null; |
780 this._addSelectors(params.stylesheets, params.mutations, completion); | 781 this._addSelectors(params.stylesheets, params.mutations, completion); |
781 }; | 782 }; |
782 document.addEventListener("DOMContentLoaded", handler); | 783 this.document.addEventListener("DOMContentLoaded", handler); |
783 } | 784 } |
784 else | 785 else |
785 { | 786 { |
786 this._filteringInProgress = true; | 787 this._filteringInProgress = true; |
787 this._addSelectors(stylesheets, mutations, completion); | 788 this._addSelectors(stylesheets, mutations, completion); |
788 } | 789 } |
789 }, | 790 }, |
790 | 791 |
791 onLoad(event) | 792 onLoad(event) |
792 { | 793 { |
(...skipping 28 matching lines...) Expand all Loading... | |
821 characterData: shouldObserveCharacterData(this.patterns), | 822 characterData: shouldObserveCharacterData(this.patterns), |
822 subtree: true | 823 subtree: true |
823 } | 824 } |
824 ); | 825 ); |
825 this.document.addEventListener("load", this.onLoad.bind(this), true); | 826 this.document.addEventListener("load", this.onLoad.bind(this), true); |
826 } | 827 } |
827 } | 828 } |
828 }; | 829 }; |
829 | 830 |
830 exports.ElemHideEmulation = ElemHideEmulation; | 831 exports.ElemHideEmulation = ElemHideEmulation; |
LEFT | RIGHT |