blob: 7e04da63ddb1f1132c53ab49e6bda713ace55ea1 [file] [log] [blame]
Juanmi Huertas209c15c2019-05-31 21:26:251<!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>
8var width = 10;
9var height = 10;
10
11function 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
22promise_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());
Juanmi Huertasb2720222019-09-11 16:26:5639 testCanvas(myCanvas2, 0, 0, 0, 0);
Juanmi Huertas209c15c2019-05-31 21:26:2540 }
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>