transferFromImageBitmap-null.html (2409B)
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, redImage) { 24 var bitmapCanvas = document.createElement('canvas'); 25 bitmapCanvas.width = width; 26 bitmapCanvas.height = height; 27 var bitmapCtx = bitmapCanvas.getContext('bitmaprenderer'); 28 29 // Make sure the bitmap renderer canvas is filled correctly. 30 bitmapCtx.transferFromImageBitmap(greenImage); 31 testCanvas(bitmapCanvas, 0, 255, 0, 255); 32 33 // Test if passing null resets the bitmap renderer canvas. 34 // Drawing the resetted canvas cannot change the destination canvas. 35 bitmapCtx.transferFromImageBitmap(null); 36 testCanvas(bitmapCanvas, 0, 0, 0, 0); 37 38 // Test if we can redraw the bitmap canvas correctly after reset. 39 bitmapCtx.transferFromImageBitmap(redImage); 40 testCanvas(bitmapCanvas, 255, 0, 0, 255); 41 } 42 43 var greenCanvas = document.createElement('canvas'); 44 greenCanvas.width = width; 45 greenCanvas.height = height; 46 var greenCtx = greenCanvas.getContext('2d'); 47 greenCtx.fillStyle = '#0f0'; 48 greenCtx.fillRect(0, 0, width, height); 49 50 var redCanvas = document.createElement('canvas'); 51 redCanvas.width = width; 52 redCanvas.height = height; 53 var redCtx = redCanvas.getContext('2d'); 54 redCtx.fillStyle = '#f00'; 55 redCtx.fillRect(0, 0, width, height); 56 57 return Promise.all([ 58 createImageBitmap(greenCanvas), 59 createImageBitmap(redCanvas), 60 ]).then(([greenImage, redImage]) => { 61 testTransferFromImageBitmapNullability(greenImage, redImage); 62 }); 63 },'Test that transferFromImageBitmap(null) discards the previously transferred image'); 64 65 </script>