canvas.2d.offscreen.worker.lang.html (2806B)
1 <!doctype HTML> 2 <html lang="en-US" class="reftest-wait"> 3 <meta charset="utf-8"> 4 <title>HTML5 Canvas Test: The lang attribute is respected 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 respects the lang text 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 const offscreen = placeholder_canvas.transferControlToOffscreen(); 28 29 const worker = new Worker('text-lang-worker-' + language + '.js'); 30 worker.postMessage({canvas: offscreen}, [offscreen]); 31 32 return placeholder_canvas; 33 } 34 35 function runTest() { 36 const placeholder_canvas_tr = createWorker('tr'); 37 const canvas_tr = document.getElementById('canvas-tr'); 38 const ctx_tr = canvas_tr.getContext('2d', {willReadFrequently: true}); 39 function checkFirstResult() { 40 // Wait until frame propagates. 41 ctx_tr.drawImage(placeholder_canvas_tr, 0, 0); 42 const pixel_tr = ctx_tr.getImageData(0, 0, 1, 1).data; 43 44 if (pixel_tr[3] == 0) { 45 // Results not available, wait longer. 46 requestAnimationFrame(checkFirstResult); 47 } else { 48 const placeholder_canvas_en = createWorker('en'); 49 const canvas_en = document.getElementById('canvas-en'); 50 const ctx_en = canvas_en.getContext('2d', {willReadFrequently: true}); 51 function checkSecondResult() { 52 ctx_en.drawImage(placeholder_canvas_en, 0, 0); 53 const pixel_en = ctx_en.getImageData(0, 0, 1, 1).data; 54 55 if (pixel_en[3] == 0) { 56 // Results not available, wait longer. 57 requestAnimationFrame(checkSecondResult); 58 } else { 59 takeScreenshot(); 60 } 61 } 62 requestAnimationFrame(checkSecondResult); 63 } 64 } 65 requestAnimationFrame(checkFirstResult); 66 } 67 </script> 68 <body onload="runTest()"> 69 <canvas id="canvas-tr" width="300" height="100"> 70 Browser does not support HTML5 Canvas. 71 </canvas> 72 <canvas id="canvas-en" width="300" height="100"> 73 Browser does not support HTML5 Canvas. 74 </canvas> 75 </body> 76 </html>