mirror of https://github.com/gorhill/uBlock.git
Add `set-local-storage-item`/`trusted-set-local-storage-item` scriptlets
Related discussion: - https://github.com/uBlockOrigin/uBlock-issues/discussions/2697
This commit is contained in:
parent
db9662f61b
commit
9443ba80a0
|
@ -2765,6 +2765,61 @@ function setCookie(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* set-local-storage-item.js
|
||||||
|
*
|
||||||
|
* Set a local storage entry to a specific, allowed value.
|
||||||
|
*
|
||||||
|
* Reference:
|
||||||
|
* https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-local-storage-item.js
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
builtinScriptlets.push({
|
||||||
|
name: 'set-local-storage-item.js',
|
||||||
|
fn: setLocalStorageItem,
|
||||||
|
world: 'ISOLATED',
|
||||||
|
});
|
||||||
|
function setLocalStorageItem(
|
||||||
|
key = '',
|
||||||
|
value = ''
|
||||||
|
) {
|
||||||
|
if ( key === '' ) { return; }
|
||||||
|
if ( value === '' ) { return; }
|
||||||
|
|
||||||
|
let actualValue;
|
||||||
|
if ( value === 'undefined' ) {
|
||||||
|
actualValue = undefined;
|
||||||
|
} else if ( value === 'false' ) {
|
||||||
|
actualValue = false;
|
||||||
|
} else if ( value === 'true' ) {
|
||||||
|
actualValue = true;
|
||||||
|
} else if ( value === 'null' ) {
|
||||||
|
actualValue = null;
|
||||||
|
} else if ( value === '{}' ) {
|
||||||
|
actualValue = '{}';
|
||||||
|
} else if ( value === '[]' ) {
|
||||||
|
actualValue = '[]';
|
||||||
|
} else if ( value === "''" ) {
|
||||||
|
actualValue = '';
|
||||||
|
} else if ( value === 'yes' ) {
|
||||||
|
actualValue = 'yes';
|
||||||
|
} else if ( value === 'no' ) {
|
||||||
|
actualValue = 'no';
|
||||||
|
} else if ( /^\d+$/.test(value) ) {
|
||||||
|
actualValue = parseInt(value, 10);
|
||||||
|
if ( actualValue > 32767 ) { return; }
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
self.localStorage.setItem(key, `${actualValue}`);
|
||||||
|
} catch(ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Scriplets below this section are only available for filter lists from
|
* Scriplets below this section are only available for filter lists from
|
||||||
|
@ -2903,4 +2958,41 @@ function trustedSetCookie(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* trusted-set-local-storage-item.js
|
||||||
|
*
|
||||||
|
* Set a local storage entry to an arbitrary value.
|
||||||
|
*
|
||||||
|
* Reference:
|
||||||
|
* https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-set-local-storage-item.js
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
builtinScriptlets.push({
|
||||||
|
name: 'trusted-set-local-storage-item.js',
|
||||||
|
requiresTrust: true,
|
||||||
|
fn: trustedSetLocalStorageItem,
|
||||||
|
world: 'ISOLATED',
|
||||||
|
});
|
||||||
|
function trustedSetLocalStorageItem(
|
||||||
|
key = '',
|
||||||
|
value = ''
|
||||||
|
) {
|
||||||
|
if ( key === '' ) { return; }
|
||||||
|
if ( value === '' ) { return; }
|
||||||
|
|
||||||
|
let actualValue = value;
|
||||||
|
if ( value === '$now$' ) {
|
||||||
|
actualValue = Date.now();
|
||||||
|
} else if ( value === '$currentDate$' ) {
|
||||||
|
actualValue = `${Date()}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
self.localStorage.setItem(key, `${actualValue}`);
|
||||||
|
} catch(ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue