test_offscreencanvas_many.html (1602B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>WebGL in OffscreenCanvas</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" href="/tests/SimpleTest/test.css"> 7 </head> 8 <body> 9 <!-- 10 This test needs several workers run offscreen canvas simultaneously. 11 So we choose 8 workers, 4 of them run basic webgl drawing test and 12 others run size changing test. 13 --> 14 <script> 15 16 SimpleTest.waitForExplicitFinish(); 17 18 function createCanvas() { 19 var htmlCanvas = document.createElement('canvas'); 20 htmlCanvas.width = 64; 21 htmlCanvas.height = 64; 22 document.body.appendChild(htmlCanvas); 23 return htmlCanvas; 24 } 25 26 function runTest() { 27 var stillRunning = 0; 28 29 var startWorker = function(canvas, test) { 30 stillRunning++; 31 var worker = new Worker("offscreencanvas.js"); 32 33 worker.onmessage = function(evt) { 34 var msg = evt.data || {}; 35 if (msg.type == "test") { 36 ok(msg.result, msg.name); 37 } 38 if (msg.type == "finish") { 39 worker.terminate(); 40 if (--stillRunning == 0) 41 SimpleTest.finish(); 42 } 43 } 44 45 var offscreenCanvas = canvas.transferControlToOffscreen(); 46 worker.postMessage({test, canvas: offscreenCanvas}, [offscreenCanvas]); 47 } 48 49 /* create 4 workers that do the regular drawing test and 4 workers 50 that do the size change test */ 51 for (var i = 0; i < 4; i++) { 52 startWorker(createCanvas(), 'webgl'); 53 } 54 55 for (var i = 0; i < 4; i++) { 56 startWorker(createCanvas(), 'webgl_changesize'); 57 } 58 } 59 60 SpecialPowers.pushPrefEnv({'set': [ 61 ['webgl.force-enabled', true] 62 ]}, runTest); 63 64 </script> 65 </body> 66 </html>