mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2025-01-03 10:31:54 +01:00
Always specify correct function names
This commit is contained in:
parent
29e61ada25
commit
e2efb727b9
@ -55,6 +55,17 @@
|
||||
return exportedTry;
|
||||
}
|
||||
else {
|
||||
if (func.name === name){
|
||||
logging.message(
|
||||
"FireFox bug: Need to change name in exportFunction from",
|
||||
exportedTry.name,
|
||||
"(originally correct) to",
|
||||
name
|
||||
);
|
||||
}
|
||||
else {
|
||||
logging.error("Wrong name specified for", name, new Error());
|
||||
}
|
||||
const wrappedContext = scope.getWrapped(context);
|
||||
const options = {
|
||||
allowCrossOriginArguments: true,
|
||||
|
@ -131,13 +131,15 @@
|
||||
protectionDefinition.methods.forEach(function(method){
|
||||
const descriptor = Object.getOwnPropertyDescriptor(object, method);
|
||||
const original = descriptor.value;
|
||||
changeProperty(object, method, "value", function method(){
|
||||
const value = arguments.length?
|
||||
original.call(this, ...arguments):
|
||||
original.call(this);
|
||||
allCallback();
|
||||
return value;
|
||||
});
|
||||
changeProperty(object, method, "value", class {
|
||||
[method](){
|
||||
const value = arguments.length?
|
||||
original.call(this, ...arguments):
|
||||
original.call(this);
|
||||
allCallback();
|
||||
return value;
|
||||
}
|
||||
}.prototype[method]);
|
||||
});
|
||||
protectionDefinition.getters.forEach(function(property){
|
||||
const temp = {
|
||||
|
@ -143,40 +143,44 @@
|
||||
}
|
||||
|
||||
map.set(object, originalPropertyDescriptor);
|
||||
const temp = class {
|
||||
[`get ${name}`](){
|
||||
if (forceLoad){
|
||||
logging.warning("force load the settings. Calling stack:", (new Error()).stack);
|
||||
undoPreIntercept();
|
||||
settings.forceLoad();
|
||||
doRealIntercept(windowToProcess, apis, state);
|
||||
const descriptor = Object.getOwnPropertyDescriptor(object, name);
|
||||
return descriptor.value || descriptor.get.call(this);
|
||||
}
|
||||
else {
|
||||
logging.notice("API blocked (%s)", name);
|
||||
const url = getURL(windowToProcess);
|
||||
if (!url){
|
||||
return undef;
|
||||
}
|
||||
const error = new Error();
|
||||
apis.notify({
|
||||
url,
|
||||
errorStack: error.stack,
|
||||
messageId: "preBlock",
|
||||
timestamp: new Date(),
|
||||
functionName: name,
|
||||
dataURL: false
|
||||
});
|
||||
return undef;
|
||||
}
|
||||
}
|
||||
[`set ${name}`](newValue){}
|
||||
}.prototype;
|
||||
Object.defineProperty(
|
||||
object,
|
||||
name,
|
||||
{
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
get: extension.exportFunctionWithName(function(){
|
||||
if (forceLoad){
|
||||
logging.warning("force load the settings. Calling stack:", (new Error()).stack);
|
||||
undoPreIntercept();
|
||||
settings.forceLoad();
|
||||
doRealIntercept(windowToProcess, apis, state);
|
||||
const descriptor = Object.getOwnPropertyDescriptor(object, name);
|
||||
return descriptor.value || descriptor.get.call(this);
|
||||
}
|
||||
else {
|
||||
logging.notice("API blocked (%s)", name);
|
||||
const url = getURL(windowToProcess);
|
||||
if (!url){
|
||||
return undef;
|
||||
}
|
||||
const error = new Error();
|
||||
apis.notify({
|
||||
url,
|
||||
errorStack: error.stack,
|
||||
messageId: "preBlock",
|
||||
timestamp: new Date(),
|
||||
functionName: name,
|
||||
dataURL: false
|
||||
});
|
||||
return undef;
|
||||
}
|
||||
}, windowToProcess, `get ${name}`),
|
||||
set: extension.exportFunctionWithName(function(){}, windowToProcess, `set ${name}`)
|
||||
get: extension.exportFunctionWithName(temp[`get ${name}`], windowToProcess, `get ${name}`),
|
||||
set: extension.exportFunctionWithName(temp[`set ${name}`], windowToProcess, `set ${name}`)
|
||||
}
|
||||
);
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user