<!DOCTYPE html> <meta charset="utf-8"> <title>Canvas's ImageBitmapRenderingContext test</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context"> <script> var width = 10; var height = 10; function testCanvas(bitmapCanvas, r, g, b, a) { var myCanvas = document.createElement('canvas'); myCanvas.width = width; myCanvas.height = height; var myCtx = myCanvas.getContext('2d'); myCtx.drawImage(bitmapCanvas, 0, 0); var color = myCtx.getImageData(5, 5, 1, 1).data; assert_array_equals(color, [r, g, b, a]); } promise_test(function() { function testTransferFromImageBitmapNullability(greenImage) { var bitmapCanvas = document.createElement('canvas'); bitmapCanvas.width = width; bitmapCanvas.height = height; var offscreenCanvas = bitmapCanvas.transferControlToOffscreen(); var bitmapCtx = offscreenCanvas.getContext('bitmaprenderer'); bitmapCtx.transferFromImageBitmap(greenImage); // Make sure the bitmap renderer canvas is filled correctly. var myCanvas = document.createElement('canvas'); var myCtx = myCanvas.getContext('bitmaprenderer'); myCtx.transferFromImageBitmap(offscreenCanvas.transferToImageBitmap()); testCanvas(myCanvas, 0, 255, 0, 255); // Test that after transfering for second time to ImageBitmap produces // a black bitmap of the same size var myCanvas2 = document.createElement('canvas'); var myCtx2 = myCanvas2.getContext('bitmaprenderer'); myCtx2.transferFromImageBitmap(offscreenCanvas.transferToImageBitmap()); testCanvas(myCanvas2, 0, 0, 0, 0); } var greenCanvas = document.createElement('canvas'); greenCanvas.width = width; greenCanvas.height = height; var greenCtx = greenCanvas.getContext('2d'); greenCtx.fillStyle = '#0f0'; greenCtx.fillRect(0, 0, width, height); return Promise.all([ createImageBitmap(greenCanvas), ]).then(([greenImage]) => { testTransferFromImageBitmapNullability(greenImage); }); },'Test that transferToImageBitmap works and that resets the imagebitmap to black'); </script>