transferFromImageBitmap-TransferToImageBitmap-offscreen.html (2166B)
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 = new OffscreenCanvas(width,height); 25 var bitmapCtx = bitmapCanvas.getContext('bitmaprenderer'); 26 bitmapCtx.transferFromImageBitmap(greenImage); 27 28 // Make sure the bitmap renderer canvas is filled correctly. 29 var myCanvas = document.createElement('canvas'); 30 var myCtx = myCanvas.getContext('bitmaprenderer'); 31 myCtx.transferFromImageBitmap(bitmapCanvas.transferToImageBitmap()); 32 testCanvas(myCanvas, 0, 255, 0, 255); 33 34 // Test that after transfering for second time to ImageBitmap produces 35 // a black bitmap of the same size 36 var myCanvas2 = document.createElement('canvas'); 37 var myCtx2 = myCanvas2.getContext('bitmaprenderer'); 38 myCtx2.transferFromImageBitmap(bitmapCanvas.transferToImageBitmap()); 39 testCanvas(myCanvas2, 0, 0, 0, 0); 40 } 41 42 var greenCanvas = document.createElement('canvas'); 43 greenCanvas.width = width; 44 greenCanvas.height = height; 45 var greenCtx = greenCanvas.getContext('2d'); 46 greenCtx.fillStyle = '#0f0'; 47 greenCtx.fillRect(0, 0, width, height); 48 49 return Promise.all([ 50 createImageBitmap(greenCanvas), 51 ]).then(([greenImage]) => { 52 testTransferFromImageBitmapNullability(greenImage); 53 }); 54 },'Test that transferToImageBitmap works and that resets the imagebitmap to black'); 55 56 </script>