mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2025-04-18 08:08:28 +02:00
Added protection from undefined properties.
DOMRect has some new properties that are only in nightly at the moment.
This commit is contained in:
parent
350fdd3278
commit
1d5953e8c7
@ -100,7 +100,13 @@
|
|||||||
forEachFunction(function({name, object}){
|
forEachFunction(function({name, object}){
|
||||||
var map = originalPropertyDescriptors[name] || new WeakMap();
|
var map = originalPropertyDescriptors[name] || new WeakMap();
|
||||||
originalPropertyDescriptors[name] = map;
|
originalPropertyDescriptors[name] = map;
|
||||||
map.set(object, Object.getOwnPropertyDescriptor(object, name));
|
|
||||||
|
const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(object, name);
|
||||||
|
if (!originalPropertyDescriptor){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
map.set(object, originalPropertyDescriptor);
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
object,
|
object,
|
||||||
name,
|
name,
|
||||||
@ -145,11 +151,14 @@
|
|||||||
if (preIntercepted){
|
if (preIntercepted){
|
||||||
preIntercepted = false;
|
preIntercepted = false;
|
||||||
forEachFunction(function({name, object}){
|
forEachFunction(function({name, object}){
|
||||||
Object.defineProperty(
|
const originalPropertyDescriptor = originalPropertyDescriptors[name].get(object);
|
||||||
object,
|
if (originalPropertyDescriptor){
|
||||||
name,
|
Object.defineProperty(
|
||||||
originalPropertyDescriptors[name].get(object)
|
object,
|
||||||
);
|
name,
|
||||||
|
originalPropertyDescriptor
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -286,26 +295,28 @@
|
|||||||
var original = constructor.prototype[name];
|
var original = constructor.prototype[name];
|
||||||
const checker = generateChecker(name, changedFunction, siteStatus, original);
|
const checker = generateChecker(name, changedFunction, siteStatus, original);
|
||||||
var descriptor = Object.getOwnPropertyDescriptor(constructor.prototype, name);
|
var descriptor = Object.getOwnPropertyDescriptor(constructor.prototype, name);
|
||||||
if (descriptor.hasOwnProperty("value")){
|
if (descriptor){
|
||||||
if (changedFunction.fakeGenerator){
|
if (descriptor.hasOwnProperty("value")){
|
||||||
descriptor.value = exportFunction(
|
if (changedFunction.fakeGenerator){
|
||||||
changedFunction.fakeGenerator(checker),
|
descriptor.value = exportFunction(
|
||||||
window
|
changedFunction.fakeGenerator(checker),
|
||||||
);
|
window
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
descriptor.value = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
descriptor.value = null;
|
descriptor.get = exportFunction(function(){
|
||||||
|
return exportFunction(
|
||||||
|
changedFunction.fakeGenerator(checker),
|
||||||
|
window
|
||||||
|
);
|
||||||
|
}, window);
|
||||||
}
|
}
|
||||||
|
Object.defineProperty(constructor.prototype, name, descriptor);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
descriptor.get = exportFunction(function(){
|
|
||||||
return exportFunction(
|
|
||||||
changedFunction.fakeGenerator(checker),
|
|
||||||
window
|
|
||||||
);
|
|
||||||
}, window);
|
|
||||||
}
|
|
||||||
Object.defineProperty(constructor.prototype, name, descriptor);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -319,7 +330,7 @@
|
|||||||
const object = objectGetter(getWrapped(window));
|
const object = objectGetter(getWrapped(window));
|
||||||
if (object){
|
if (object){
|
||||||
const descriptor = Object.getOwnPropertyDescriptor(object, name);
|
const descriptor = Object.getOwnPropertyDescriptor(object, name);
|
||||||
if (descriptor.hasOwnProperty("get")){
|
if (descriptor && descriptor.hasOwnProperty("get")){
|
||||||
var original = descriptor.get;
|
var original = descriptor.get;
|
||||||
const checker = generateChecker(name, changedGetter, siteStatus, original);
|
const checker = generateChecker(name, changedGetter, siteStatus, original);
|
||||||
const getter = changedGetter.getterGenerator(checker);
|
const getter = changedGetter.getterGenerator(checker);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user