tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>