-
Notifications
You must be signed in to change notification settings - Fork 33
Improve 'trusted-replace-argument' — add new constant values #562
Open
Assignees
Labels
Description
Related to AdguardTeam/AdguardFilters#232621
Steps to reproduce:
- Add to user rules:
example.org#%#//scriptlet('trusted-replace-argument', 'Promise', '0', 'noopPromiseResolve', 'isDetected')
- Navigate to https://example.org/
- In browser console run:
(async () => { const checkAdblock = () => { console.log('Checking for adblock...'); return new Promise((resolve) => { // Set to true by default for demonstration purposes const isDetected = true; resolve(isDetected); }); }; const init = async () => { const [result] = await Promise.all([ checkAdblock(), ]); if (result) { console.log('Adblock detected'); return; } console.log('Load content'); } await init(); console.log('Script loaded'); })();
With current solution only Checking for adblock... is printed in console (the same fornoopCallbackFunc, noopFunc, falseFunc).
Expected is:
Checking for adblock...
Load content
Script loaded
So, I think we could add functions which return callback with false/true, something like:
const falseCallbackFunc = (callback) => { callback(false); }; const trueCallbackFunc = (callback) => { callback(true); };
And/Or we could add support for valueWrapper similar like in https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-scriptlets.md#set-constant