offscreencanvas.transfercontrol.to.offscreen.w.html (2979B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/html/canvas/resources/canvas-tests.js"></script> 5 <link rel="help" href="https://html.spec.whatwg.org/#dom-canvas-transfercontroltooffscreen"> 6 7 <script id="myWorker" type="text/worker"> 8 9 function testSize(offscreenCanvas) 10 { 11 if (offscreenCanvas.width == 100 && offscreenCanvas.height == 50) 12 return true; 13 return false; 14 } 15 16 self.onmessage = function(e) { 17 switch (e.data.msg) { 18 case 'test1': 19 self.postMessage(testSize(e.data.data)); 20 break; 21 case 'test2': 22 self.postMessage(""); 23 break; 24 case 'test3': 25 self.postMessage(""); 26 break; 27 } 28 }; 29 30 </script> 31 32 <script> 33 function makeWorker(script) 34 { 35 var blob = new Blob([script]); 36 return new Worker(URL.createObjectURL(blob)); 37 } 38 39 async_test(function(t) { 40 var placeholder = document.createElement('canvas'); 41 placeholder.width = 100; 42 placeholder.height = 50; 43 var offscreenCanvas = placeholder.transferControlToOffscreen(); 44 var worker = makeWorker(document.getElementById("myWorker").textContent); 45 worker.addEventListener('message', t.step_func_done(function(msg) { 46 assert_true(msg.data); 47 })); 48 worker.postMessage({msg: 'test1', data: offscreenCanvas}, [offscreenCanvas]); 49 }, "Test that an OffscreenCanvas generated by transferControlToOffscreen gets correct width and height when it is transferred to a worker"); 50 51 async_test(function(t) { 52 var placeholder = document.createElement('canvas'); 53 placeholder.width = 100; 54 placeholder.height = 50; 55 var offscreenCanvas = placeholder.transferControlToOffscreen(); 56 var worker = makeWorker(document.getElementById("myWorker").textContent); 57 worker.addEventListener('message', t.step_func_done(function(msg) { 58 assert_throws_dom("InvalidStateError", function() { placeholder.getContext('2d'); }); 59 })); 60 worker.postMessage({msg: 'test2', data: offscreenCanvas}, [offscreenCanvas]); 61 }, "Test that calling getContext on a placeholder canvas that is transferred its control to an OffscreenCanvas throws an exception, when the OffscreenCanvas is transferred to a worker"); 62 63 async_test(function(t) { 64 var placeholder = document.createElement('canvas'); 65 placeholder.width = 100; 66 placeholder.height = 50; 67 var offscreenCanvas = placeholder.transferControlToOffscreen(); 68 var worker = makeWorker(document.getElementById("myWorker").textContent); 69 worker.addEventListener('message', t.step_func_done(function(msg) { 70 assert_throws_dom("InvalidStateError", function() { placeholder.transferControlToOffscreen(); }); 71 })); 72 worker.postMessage({msg: 'test3', data: offscreenCanvas}, [offscreenCanvas]); 73 }, "Test that calling transferControlToOffscreen twice throws an exception, when its associated OffscreenCanvas is transferred to a worker"); 74 75 </script>