tor-browser

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

test_offscreencanvas_subworker.html (2355B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <title>OffscreenCanvas: Test subworkers</title>
      5 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6 <link rel="stylesheet" href="/tests/SimpleTest/test.css">
      7 </head>
      8 <body>
      9 <!--
     10  We want to test offscreen canvas works well when it running on worker
     11  and nested worker simultaneously. So we create 10 canvas and dispatch
     12  it to different workers and sub-workers.
     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.transferControlToOffscreen();
     24 }
     25 
     26 function runTest() {
     27 
     28  var worker = new Worker("offscreencanvas.js");
     29 
     30  worker.onmessage = function(evt) {
     31    var msg = evt.data || {};
     32    if (msg.type == "test") {
     33      ok(msg.result, msg.name);
     34    }
     35    if (msg.type == "finish") {
     36      worker.terminate();
     37      SimpleTest.finish();
     38    }
     39  }
     40 
     41  var findTransferables = function(t) {
     42    if (t.test == "subworker") {
     43      var result = [];
     44      t.subtests.forEach(function(test) {
     45        result = result.concat(findTransferables(test));
     46      });
     47 
     48      return result;
     49    } else {
     50      return [t.canvas];
     51    }
     52  };
     53 
     54  var testData =
     55    {test: 'subworker', subtests: [
     56      {test: 'webgl', canvas: createCanvas()},
     57      {test: 'subworker', subtests: [
     58        {test: 'webgl', canvas: createCanvas()},
     59        {test: 'webgl_changesize', canvas: createCanvas()},
     60        {test: 'webgl', canvas: createCanvas()}
     61      ]},
     62      {test: 'subworker', subtests: [
     63        {test: 'webgl', canvas: createCanvas()},
     64        {test: 'webgl_changesize', canvas: createCanvas()},
     65        {test: 'subworker', subtests: [
     66          {test: 'webgl_changesize', canvas: createCanvas()},
     67          {test: 'webgl', canvas: createCanvas()}
     68        ]},
     69        {test: 'subworker', subtests: [
     70          {test: 'webgl_changesize', canvas: createCanvas()},
     71          {test: 'subworker', subtests: [
     72            {test: 'subworker', subtests: [
     73              {test: 'webgl_changesize', canvas: createCanvas()}
     74            ]}
     75          ]}
     76        ]},
     77      ]}
     78    ]};
     79 
     80  worker.postMessage(testData, findTransferables(testData));
     81 }
     82 
     83 SpecialPowers.pushPrefEnv({'set': [
     84  ['webgl.force-enabled', true],
     85 ]}, runTest);
     86 
     87 </script>
     88 </body>
     89 </html>