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>