/* entry point */ function entryFunction(testStr, subtests, offscreenCanvas) { var test = testStr; var canvas = offscreenCanvas; if (test == "webgl_imagebitmap") {
canvas = new OffscreenCanvas(64, 64);
}
if (test != "subworker") {
ok(canvas, "Canvas successfully transfered to worker");
ok(canvas.getContext, "Canvas has getContext");
ok(canvas.width == 64, "OffscreenCanvas width should be 64");
ok(canvas.height == 64, "OffscreenCanvas height should be 64");
}
var draw;
//------------------------------------------------------------------------ // Basic WebGL test //------------------------------------------------------------------------ if (test == "webgl") {
draw = createDrawFunc(canvas); if (!draw) {
finish(); return;
}
var count = 0; var iid = setInterval(function () { if (count++ > 20) {
clearInterval(iid);
ok(true, "Worker is done");
finish(); return;
}
draw("loop " + count, true);
}, 0);
} //------------------------------------------------------------------------ // Test dynamic fallback //------------------------------------------------------------------------ elseif (test == "webgl_fallback") {
draw = createDrawFunc(canvas); if (!draw) { return;
}
var count = 0; var iid = setInterval(function () {
++count;
draw("loop " + count, true);
drawCount(count);
}, 0);
} //------------------------------------------------------------------------ // Test toBlob //------------------------------------------------------------------------ elseif (test == "webgl_toblob") {
draw = createDrawFunc(canvas); if (!draw) { return;
}
ok(true, "Worker is done");
finish();
}, 0);
}, 0);
}, 0);
} //------------------------------------------------------------------------ // Using OffscreenCanvas from sub workers //------------------------------------------------------------------------ elseif (test == "subworker") { /* subworker tests take a list of tests to run on children */ var stillRunning = 0;
subtests.forEach(function (subtest) {
++stillRunning; var subworker = new Worker("offscreencanvas.js");
subworker.onmessage = function (evt) { /* report finish to parent when all children are finished */ if (evt.data.type == "finish") {
subworker.terminate(); if (--stillRunning == 0) {
ok(true, "Worker is done");
finish();
} return;
} /* relay all other messages to parent */
postMessage(evt.data);
};
var findTransferables = function (t) { if (t.test == "subworker") { var result = [];
t.subtests.forEach(function (subWorkerTest) {
result = result.concat(findTransferables(subWorkerTest));
});
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.