From d4fb87b6baff9c0c8334c970b767bc17f330a7a7 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 24 May 2023 14:58:12 -0400 Subject: [PATCH] Properly return inherited methods in property getter in spoof-css scriptlet Related feedback: - https://github.com/uBlockOrigin/uBlock-issues/issues/2618#issuecomment-1561451479 --- assets/resources/scriptlets.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 11e4a91903e5b..b87f40bcaa78d 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -2262,6 +2262,9 @@ function spoofCSS( proxiedStyles.add(target); const proxiedStyle = new Proxy(style, { get(target, prop, receiver) { + if ( typeof target[prop] === 'function' ) { + return target[prop].bind(target); + } return spoofStyle(prop, Reflect.get(target, prop, receiver)); }, }); @@ -2349,9 +2352,10 @@ function spoofCSS( **/ builtinScriptlets.push({ - name: 'sed.js', + name: 'replace-node-text.js', requiresTrust: true, - fn: sed, + aliases: [ 'rnt.js', 'sed.js' /* to be removed */ ], + fn: replaceNodeText, world: 'ISOLATED', dependencies: [ 'get-extra-args.fn', @@ -2360,7 +2364,7 @@ builtinScriptlets.push({ 'safe-self.fn', ], }); -function sed( +function replaceNodeText( nodeName = '', pattern = '', replacement = ''