<!DOCTYPE HTML><html><head><title>OffscreenCanvas: Test subworkers</title><scriptsrc="/tests/SimpleTest/SimpleTest.js"></script><linkrel="stylesheet"href="/tests/SimpleTest/test.css"></head><body><!-- We want to test offscreen canvas works well when it running on worker and nested worker simultaneously. So we create 10 canvas and dispatch it to different workers and sub-workers.--><script>SimpleTest.waitForExplicitFinish();functioncreateCanvas(){varhtmlCanvas=document.createElement('canvas');htmlCanvas.width=64;htmlCanvas.height=64;document.body.appendChild(htmlCanvas);returnhtmlCanvas.transferControlToOffscreen();}functionrunTest(){varworker=newWorker("offscreencanvas.js");worker.onmessage=function(evt){varmsg=evt.data||{};if(msg.type=="test"){ok(msg.result,msg.name);}if(msg.type=="finish"){worker.terminate();SimpleTest.finish();}}varfindTransferables=function(t){if(t.test=="subworker"){varresult=[];t.subtests.forEach(function(test){result=result.concat(findTransferables(test));});returnresult;}else{return[t.canvas];}};vartestData={test:'subworker',subtests:[{test:'webgl',canvas:createCanvas()},{test:'subworker',subtests:[{test:'webgl',canvas:createCanvas()},{test:'webgl_changesize',canvas:createCanvas()},{test:'webgl',canvas:createCanvas()}]},{test:'subworker',subtests:[{test:'webgl',canvas:createCanvas()},{test:'webgl_changesize',canvas:createCanvas()},{test:'subworker',subtests:[{test:'webgl_changesize',canvas:createCanvas()},{test:'webgl',canvas:createCanvas()}]},{test:'subworker',subtests:[{test:'webgl_changesize',canvas:createCanvas()},{test:'subworker',subtests:[{test:'subworker',subtests:[{test:'webgl_changesize',canvas:createCanvas()}]}]}]},]}]};worker.postMessage(testData,findTransferables(testData));}SpecialPowers.pushPrefEnv({'set':[['webgl.force-enabled',true],]},runTest);</script></body></html>