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 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
723 return true; | 723 return true; |
724 if (typeof onerror == "function") | 724 if (typeof onerror == "function") |
725 return (() => {}).call.call(onerror, this, message, ...rest); | 725 return (() => {}).call.call(onerror, this, message, ...rest); |
726 }; | 726 }; |
727 } | 727 } |
728 | 728 |
729 /** | 729 /** |
730 * Patches a property on the window object to abort execution when the | 730 * Patches a property on the window object to abort execution when the |
731 * property is read. | 731 * property is read. |
732 * | 732 * |
733 * No error is be printed to the console. | 733 * No error is printed to the console. |
734 * | 734 * |
735 * The idea originates from | 735 * The idea originates from |
736 * {@link https://github.com/uBlockOrigin/uAssets/blob/80b195436f8f8d78ba713237b fc268ecfc9d9d2b/filters/resources.txt#L1703 uBlock Origin}. | 736 * {@link https://github.com/uBlockOrigin/uAssets/blob/80b195436f8f8d78ba713237b fc268ecfc9d9d2b/filters/resources.txt#L1703 uBlock Origin}. |
737 * | 737 * |
738 * @param {string} property The name of the property. | 738 * @param {string} property The name of the property. |
739 */ | 739 */ |
740 function abortOnPropertyRead(property) | 740 function abortOnPropertyRead(property) |
741 { | 741 { |
742 if (!property) | 742 if (!property) |
743 return; | 743 return; |
744 | 744 |
745 let rid = randomId(); | 745 let rid = randomId(); |
746 | 746 |
747 function abort() | 747 function abort() |
748 { | 748 { |
749 throw new ReferenceError(rid); | 749 throw new ReferenceError(rid); |
750 } | 750 } |
751 | 751 |
752 if (wrapPropertyAccess(window, property, {get: abort, set() {}})) | 752 if (wrapPropertyAccess(window, property, {get: abort, set() {}})) |
753 overrideOnError(rid); | 753 overrideOnError(rid); |
754 } | 754 } |
755 | 755 |
756 exports["abort-on-property-read"] = makeInjector(abortOnPropertyRead, | 756 exports["abort-on-property-read"] = makeInjector(abortOnPropertyRead, |
757 wrapPropertyAccess, | 757 wrapPropertyAccess, |
758 overrideOnError, | 758 overrideOnError, |
759 randomId); | 759 randomId); |
760 | 760 |
761 /** | 761 /** |
762 * Patches a property on the window object to abort execution when the | 762 * Patches a property on the window object to abort execution when the |
763 * property is written (set). | 763 * property is written. |
Manish Jethani
2019/01/15 14:13:29
Nit: I don't think "(set)" is necessary, but it's
hub
2019/01/15 16:40:29
I ought it clarify, but then I don't for "read" so
| |
764 * | 764 * |
765 * No error is be printed to the console. | 765 * No error is printed to the console. |
Manish Jethani
2019/01/15 14:13:30
Correction: No error is printed to the console.
W
hub
2019/01/15 16:40:29
Done.
BTW it is a cut&paste error that is found i
| |
766 * | 766 * |
767 * The idea originates from | 767 * The idea originates from |
768 * {@link https://github.com/uBlockOrigin/uAssets/blob/80b195436f8f8d78ba713237b fc268ecfc9d9d2b/filters/resources.txt#L1671 uBlock Origin}. | 768 * {@link https://github.com/uBlockOrigin/uAssets/blob/80b195436f8f8d78ba713237b fc268ecfc9d9d2b/filters/resources.txt#L1671 uBlock Origin}. |
769 * | 769 * |
770 * @param {string} property The name of the property. | 770 * @param {string} property The name of the property. |
771 */ | 771 */ |
772 function abortOnPropertyWrite(property) | 772 function abortOnPropertyWrite(property) |
773 { | 773 { |
774 if (!property) | 774 if (!property) |
775 return; | 775 return; |
776 | 776 |
777 let rid = randomId(); | 777 let rid = randomId(); |
778 | 778 |
779 function abort() | 779 function abort() |
780 { | 780 { |
781 throw new ReferenceError(rid); | 781 throw new ReferenceError(rid); |
782 } | 782 } |
783 | 783 |
784 if (wrapPropertyAccess(window, property, {set: abort})) | 784 if (wrapPropertyAccess(window, property, {set: abort})) |
Manish Jethani
2019/01/15 14:13:29
Do we need a getter here?
hub
2019/01/15 16:40:30
We don't.
Manish Jethani
2019/01/15 17:24:16
Acknowledged.
| |
785 overrideOnError(rid); | 785 overrideOnError(rid); |
786 } | 786 } |
787 | 787 |
788 exports["abort-on-property-write"] = makeInjector(abortOnPropertyWrite, | 788 exports["abort-on-property-write"] = makeInjector(abortOnPropertyWrite, |
789 wrapPropertyAccess, | 789 wrapPropertyAccess, |
790 overrideOnError, | 790 overrideOnError, |
791 randomId); | 791 randomId); |
792 | 792 |
793 /** | 793 /** |
794 * Aborts the execution of an inline script. | 794 * Aborts the execution of an inline script. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
844 } | 844 } |
845 }; | 845 }; |
846 | 846 |
847 if (wrapPropertyAccess(object, name, descriptor)) | 847 if (wrapPropertyAccess(object, name, descriptor)) |
848 overrideOnError(rid); | 848 overrideOnError(rid); |
849 } | 849 } |
850 | 850 |
851 exports["abort-current-inline-script"] = | 851 exports["abort-current-inline-script"] = |
852 makeInjector(abortCurrentInlineScript, wrapPropertyAccess, toRegExp, | 852 makeInjector(abortCurrentInlineScript, wrapPropertyAccess, toRegExp, |
853 overrideOnError, regexEscape, randomId); | 853 overrideOnError, regexEscape, randomId); |
LEFT | RIGHT |