mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2025-07-04 20:46:39 +02:00
Added test for blob, offscreen canvas and offscreen canvas in workers
This commit is contained in:
parent
7c2a4edde0
commit
a79c4ec8c5
4 changed files with 119 additions and 7 deletions
|
@ -18,6 +18,54 @@ const testAPI = function(){
|
|||
|
||||
|
||||
return {
|
||||
runInWorker: async function(func, args = [], scripts = []){
|
||||
return new Promise(function(resolve, reject){
|
||||
const apis = scripts.map(function(script){
|
||||
switch (typeof script){
|
||||
case "function":
|
||||
return script.toString();
|
||||
case "string":
|
||||
case "object":
|
||||
return "self.importScripts(" + JSON.stringify(script.toString()) + ")";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}).join(";\n");
|
||||
const code = `${apis};
|
||||
${func.toString()}
|
||||
async function run(){
|
||||
return ${func.name}(${args.map(JSON.stringify).join(", ")});
|
||||
}
|
||||
run().then(function(result){
|
||||
self.postMessage({result});
|
||||
}).catch(function(error){
|
||||
console.log(error);
|
||||
self.postMessage({error: error.message || error.toString()});
|
||||
});`;
|
||||
const blob = new Blob([code], {type: "text/javascript"});
|
||||
|
||||
const blobWorker = new Worker(URL.createObjectURL(blob), {name: "BlobWorker"});
|
||||
blobWorker.addEventListener("message", function(event){
|
||||
if (event.data.error){
|
||||
reject(event.data.error);
|
||||
}
|
||||
else {
|
||||
resolve(event.data.result);
|
||||
}
|
||||
blobWorker.terminate();
|
||||
});
|
||||
});
|
||||
},
|
||||
readBlob: async function(blob){
|
||||
const reader = new FileReader();
|
||||
return new Promise(function(resolve, reject){
|
||||
reader.addEventListener("error", reject);
|
||||
reader.addEventListener("load", function(){
|
||||
resolve(reader.result);
|
||||
});
|
||||
reader.readAsDataURL(blob);
|
||||
});
|
||||
},
|
||||
hash: async function(input){
|
||||
const buffer = ((typeof input) === "string")?
|
||||
new TextEncoder("utf-8").encode(input):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue