transferFromImageBitmap-TransferToImageBitmap-transferControlToOffscreen.html (2321B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Canvas's ImageBitmapRenderingContext test</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context"> 7 <script> 8 var width = 10; 9 var height = 10; 10 11 function testCanvas(bitmapCanvas, r, g, b, a) 12 { 13 var myCanvas = document.createElement('canvas'); 14 myCanvas.width = width; 15 myCanvas.height = height; 16 var myCtx = myCanvas.getContext('2d'); 17 myCtx.drawImage(bitmapCanvas, 0, 0); 18 var color = myCtx.getImageData(5, 5, 1, 1).data; 19 assert_array_equals(color, [r, g, b, a]); 20 } 21 22 promise_test(function() { 23 function testTransferFromImageBitmapNullability(greenImage) { 24 var bitmapCanvas = document.createElement('canvas'); 25 bitmapCanvas.width = width; 26 bitmapCanvas.height = height; 27 var offscreenCanvas = bitmapCanvas.transferControlToOffscreen(); 28 var bitmapCtx = offscreenCanvas.getContext('bitmaprenderer'); 29 bitmapCtx.transferFromImageBitmap(greenImage); 30 31 // Make sure the bitmap renderer canvas is filled correctly. 32 var myCanvas = document.createElement('canvas'); 33 var myCtx = myCanvas.getContext('bitmaprenderer'); 34 myCtx.transferFromImageBitmap(offscreenCanvas.transferToImageBitmap()); 35 testCanvas(myCanvas, 0, 255, 0, 255); 36 37 // Test that after transfering for second time to ImageBitmap produces 38 // a black bitmap of the same size 39 var myCanvas2 = document.createElement('canvas'); 40 var myCtx2 = myCanvas2.getContext('bitmaprenderer'); 41 myCtx2.transferFromImageBitmap(offscreenCanvas.transferToImageBitmap()); 42 testCanvas(myCanvas2, 0, 0, 0, 0); 43 } 44 45 var greenCanvas = document.createElement('canvas'); 46 greenCanvas.width = width; 47 greenCanvas.height = height; 48 var greenCtx = greenCanvas.getContext('2d'); 49 greenCtx.fillStyle = '#0f0'; 50 greenCtx.fillRect(0, 0, width, height); 51 52 return Promise.all([ 53 createImageBitmap(greenCanvas), 54 ]).then(([greenImage]) => { 55 testTransferFromImageBitmapNullability(greenImage); 56 }); 57 },'Test that transferToImageBitmap works and that resets the imagebitmap to black'); 58 59 </script>