tor-browser

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

canvas.2d.offscreen.worker.lang.inherit.html (2836B)


      1 <!doctype HTML>
      2 <html class="reftest-wait">
      3  <meta charset="utf-8">
      4  <title>HTML5 Canvas Test:  The lang attribute is inherited in offscreen worker canvas</title>
      5  <link rel="match" href="canvas.2d.offscreen.worker.lang-ref.html" />
      6  <link rel="author" href="mailto:schenney@chromium.org"/>
      7  <link rel="help" href="https://html.spec.whatwg.org/multipage/canvas.html#text-styles"/>
      8  <meta name="assert" content="An offscreen canvas in a worker inherits the lang attribute." />
      9  <script src="/common/reftest-wait.js"></script>
     10  <style>
     11    #canvas-tr {
     12      position: absolute;
     13      top: 10px;
     14      left: 10px;
     15    }
     16    #canvas-en {
     17      position: absolute;
     18      top: 120px;
     19      left: 10px;
     20    }
     21  </style>
     22  <script type="text/javascript">
     23    function createWorker(language) {
     24      const placeholder_canvas = document.createElement('canvas');
     25      placeholder_canvas.setAttribute('width', '300');
     26      placeholder_canvas.setAttribute('height', '100');
     27      placeholder_canvas.setAttribute('lang', language);
     28      const offscreen = placeholder_canvas.transferControlToOffscreen();
     29 
     30      const worker = new Worker('text-lang-worker-inherit.js');
     31      worker.postMessage({canvas: offscreen}, [offscreen]);
     32 
     33      return placeholder_canvas;
     34    }
     35 
     36    function runTest() {
     37      const placeholder_canvas_tr = createWorker('tr');
     38      const canvas_tr = document.getElementById('canvas-tr');
     39      const ctx_tr = canvas_tr.getContext('2d', {willReadFrequently: true});
     40      function checkFirstResult() {
     41        // Wait until frame propagates.
     42        ctx_tr.drawImage(placeholder_canvas_tr, 0, 0);
     43        const pixel_tr = ctx_tr.getImageData(0, 0, 1, 1).data;
     44 
     45        if (pixel_tr[3] == 0) {
     46          // Results not available, wait longer.
     47          requestAnimationFrame(checkFirstResult);
     48        } else {
     49          const placeholder_canvas_en = createWorker('en');
     50          const canvas_en = document.getElementById('canvas-en');
     51          const ctx_en = canvas_en.getContext('2d', {willReadFrequently: true});
     52          function checkSecondResult() {
     53            ctx_en.drawImage(placeholder_canvas_en, 0, 0);
     54            const pixel_en = ctx_en.getImageData(0, 0, 1, 1).data;
     55 
     56            if (pixel_en[3] == 0) {
     57              // Results not available, wait longer.
     58              requestAnimationFrame(checkSecondResult);
     59            } else {
     60              takeScreenshot();
     61            }
     62          }
     63          requestAnimationFrame(checkSecondResult);
     64        }
     65      }
     66      requestAnimationFrame(checkFirstResult);
     67    }
     68  </script>
     69  <body onload="runTest()">
     70    <canvas id="canvas-tr" width="300" height="100">
     71      Browser does not support HTML5 Canvas.
     72    </canvas>
     73    <canvas id="canvas-en" width="300" height="100">
     74      Browser does not support HTML5 Canvas.
     75    </canvas>
     76  </body>
     77 </html>