From a1da007acafd981d6fedfe39ead0826758a7b1fc Mon Sep 17 00:00:00 2001 From: JustOff Date: Sun, 13 Dec 2020 23:30:29 +0200 Subject: [PATCH] Re-import set-constant scriptlet from upstream Base commit: - https://github.com/gorhill/uBlock/commit/85cf8f5807cf82044970c88d17b112d4994ad5d4 Related commit: - https://github.com/gorhill/uBlock/commit/152cea2dfe9d0e35d86314633d612a9ad96ee94f --- assets/resources/resources.txt | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/assets/resources/resources.txt b/assets/resources/resources.txt index b58fad49d..439466fec 100644 --- a/assets/resources/resources.txt +++ b/assets/resources/resources.txt @@ -1775,7 +1775,8 @@ disable-newtab-links.js application/javascript set-constant.js application/javascript (function() { - var cValue = '{{2}}'; + const thisScript = document.currentScript; + let cValue = '{{2}}'; if ( cValue === 'undefined' ) { cValue = undefined; } else if ( cValue === 'false' ) { @@ -1799,8 +1800,8 @@ set-constant.js application/javascript } else { return; } - var aborted = false; - var mustAbort = function(v) { + let aborted = false; + const mustAbort = function(v) { if ( aborted ) { return true; } aborted = (v !== undefined && v !== null) && @@ -1808,17 +1809,18 @@ set-constant.js application/javascript (typeof v !== typeof cValue); return aborted; }; - var chain = '{{1}}', owner = window; - var makeProxy = function(owner, chain) { - var desc; - var pos = chain.indexOf('.'); + const makeProxy = function(owner, chain) { + const pos = chain.indexOf('.'); if ( pos === -1 ) { - if ( mustAbort(owner[chain]) ) { return; } - desc = Object.getOwnPropertyDescriptor(owner, chain); + const original = owner[chain]; + if ( mustAbort(original) ) { return; } + const desc = Object.getOwnPropertyDescriptor(owner, chain); if ( desc === undefined || desc.get === undefined ) { Object.defineProperty(owner, chain, { get: function() { - return cValue; + return document.currentScript === thisScript + ? original + : cValue; }, set: function(a) { if ( mustAbort(a) ) { @@ -1829,9 +1831,9 @@ set-constant.js application/javascript } return; } - var prop = chain.slice(0, pos), - v = owner[prop]; - chain = chain.slice(pos + 1); + const prop = chain.slice(0, pos); + let v = owner[prop]; + chain = chain.slice(pos + 1); if ( (v instanceof Object) || (typeof v === 'object' && v !== null) @@ -1839,8 +1841,8 @@ set-constant.js application/javascript makeProxy(v, chain); return; } - desc = Object.getOwnPropertyDescriptor(owner, prop); - if ( desc && desc.set ) { return; } + const desc = Object.getOwnPropertyDescriptor(owner, prop); + if ( desc && desc.set !== undefined ) { return; } Object.defineProperty(owner, prop, { get: function() { return v; @@ -1853,7 +1855,7 @@ set-constant.js application/javascript } }); }; - makeProxy(owner, chain); + makeProxy(window, '{{1}}'); })();