1
0
Fork 0
mirror of https://github.com/kkapsner/CanvasBlocker synced 2025-07-04 04:26:35 +02:00

Hide function replacement

Fixes #206
This commit is contained in:
kkapsner 2018-07-13 16:58:13 +02:00
parent 9711c67c3f
commit 26529a3653
6 changed files with 375 additions and 281 deletions

View file

@ -16,6 +16,7 @@
const logging = require("./logging");
const {sha256String: hashing} = require("./hash");
const getWrapped = require("sdk/getWrapped");
const {hasType, checkerWrapper} = require("./modifiedAPIFunctions");
var randomSupply = null;
@ -143,10 +144,6 @@
}
}
function hasType(status, type){
return status.type.indexOf(type) !== -1;
}
scope.setRandomSupply = function(supply){
randomSupply = supply;
};
@ -168,79 +165,100 @@
scope.changedFunctions = {
getFloatFrequencyData: {
object: ["AnalyserNode"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function getFloatFrequencyData(array){
notifyOnce("getFloatFrequencyData", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeFloat32Array(array, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("getFloatFrequencyData", notify);
var ret = original.apply(this, window.Array.from(args));
fakeFloat32Array(array, window, prefs);
return ret;
});
};
}
},
getByteFrequencyData: {
object: ["AnalyserNode"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function getByteFrequencyData(array){
notifyOnce("getByteFrequencyData", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeUint8Array(array, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("getByteFrequencyData", notify);
var ret = original.apply(this, window.Array.from(args));
fakeUint8Array(array, window, prefs);
return ret;
});
};
}
},
getFloatTimeDomainData: {
object: ["AnalyserNode"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function getFloatTimeDomainData(array){
notifyOnce("getFloatTimeDomainData", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeFloat32Array(array, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("getFloatTimeDomainData", notify);
var ret = original.apply(this, window.Array.from(args));
fakeFloat32Array(array, window, prefs);
return ret;
});
};
}
},
getByteTimeDomainData: {
object: ["AnalyserNode"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function getByteTimeDomainData(array){
notifyOnce("getByteTimeDomainData", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeUint8Array(array, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("getByteTimeDomainData", notify);
var ret = original.apply(this, window.Array.from(args));
fakeUint8Array(array, window, prefs);
return ret;
});
};
}
},
getChannelData: {
object: ["AudioBuffer"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function getChannelData(channel){
notifyOnce("getChannelData", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeFloat32Array(ret, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("getChannelData", notify);
var ret = original.apply(this, window.Array.from(args));
fakeFloat32Array(ret, window, prefs);
return ret;
});
};
}
},
copyFromChannel: {
object: ["AudioBuffer"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function copyFromChannel(destination, channelNumber, startInChannel){
notifyOnce("copyFromChannel", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeFloat32Array(destination, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("copyFromChannel", notify);
var ret = original.apply(this, window.Array.from(args));
fakeFloat32Array(destination, window, prefs);
return ret;
});
};
}
},
getFrequencyResponse: {
object: ["BiquadFilterNode", "IIRFilterNode"],
fakeGenerator: function(prefs, notify, window, original){
fakeGenerator: function(checker){
return function getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput){
notifyOnce("getFrequencyResponse", notify);
var ret = original.apply(this, window.Array.from(arguments));
fakeFloat32Array(magResponseOutput, window, prefs);
fakeFloat32Array(phaseResponseOutput, window, prefs);
return ret;
return checkerWrapper(checker, this, arguments, function(args, check){
var {prefs, notify, window, original} = check;
notifyOnce("getFrequencyResponse", notify);
var ret = original.apply(this, window.Array.from(args));
fakeFloat32Array(magResponseOutput, window, prefs);
fakeFloat32Array(phaseResponseOutput, window, prefs);
return ret;
});
};
}
},