Improve set-constant scriptlet

Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/881#discussioncomment-10072370
This commit is contained in:
Raymond Hill 2024-07-17 09:36:55 -04:00
parent fd054176a8
commit 77feb25c4d
No known key found for this signature in database
GPG key ID: 25E1490B761470C2

View file

@ -485,9 +485,8 @@ builtinScriptlets.push({
'safe-self.fn',
],
});
function validateConstantFn(trusted, raw) {
function validateConstantFn(trusted, raw, extraArgs = {}) {
const safe = safeSelf();
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
let value;
if ( raw === 'undefined' ) {
value = undefined;
@ -587,7 +586,7 @@ function setConstantFn(
};
if ( trappedProp === '' ) { return; }
const thisScript = document.currentScript;
let normalValue = validateConstantFn(trusted, rawValue);
let normalValue = validateConstantFn(trusted, rawValue, extraArgs);
if ( rawValue === 'noopFunc' || rawValue === 'trueFunc' || rawValue === 'falseFunc' ) {
normalValue = cloakFunc(normalValue);
}
@ -4772,7 +4771,7 @@ function trustedReplaceArgument(
const logPrefix = safe.makeLogPrefix('trusted-replace-argument', propChain, argposRaw, argraw);
const argpos = parseInt(argposRaw, 10) || 0;
const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
const normalValue = validateConstantFn(true, argraw);
const normalValue = validateConstantFn(true, argraw, extraArgs);
const reCondition = extraArgs.condition
? safe.patternToRegex(extraArgs.condition)
: /^/;