| Index: LayoutTests/fast/canvas/canvas-createImageBitmap-webgl.html
|
| diff --git a/LayoutTests/fast/canvas/canvas-createImageBitmap-webgl.html b/LayoutTests/fast/canvas/canvas-createImageBitmap-webgl.html
|
| index 5d919c3f7673d88773836f7b5ab69c3cc60cb4b1..71cc8f6588c80434301d61169db9a8d145b7fce0 100644
|
| --- a/LayoutTests/fast/canvas/canvas-createImageBitmap-webgl.html
|
| +++ b/LayoutTests/fast/canvas/canvas-createImageBitmap-webgl.html
|
| @@ -3,7 +3,14 @@
|
| <script src="../../resources/js-test.js"></script>
|
| </head>
|
| <body onload="start();">
|
| +<canvas id="webgl" width="200" height="200"></canvas>
|
| <script>
|
| +/*
|
| + * crbug.com/438986
|
| + * window.createImageBitmap(HTMLCanvasElement) copies the back buffer of WebGL.
|
| + * So createImageBitmap(HTMLCanvasElement) must create transparent ImageBuffer
|
| + * 1 frame after WebGL draws contents.
|
| + */
|
| window.jsTestIsAsync = true;
|
|
|
| var canvas = document.createElement("canvas");
|
| @@ -18,24 +25,53 @@
|
| shouldBeTrue("d[3] == 255");
|
| }
|
|
|
| + function shouldBeTransparent(x, y) {
|
| + d = ctx.getImageData(x, y, 1, 1).data;
|
| + shouldBeTrue("d[0] == 0");
|
| + shouldBeTrue("d[1] == 0");
|
| + shouldBeTrue("d[2] == 0");
|
| + shouldBeTrue("d[3] == 0");
|
| + }
|
| +
|
| function start() {
|
| - var aCanvas = document.createElement("canvas");
|
| - aCanvas.width = 200;
|
| - aCanvas.height = 200;
|
| - var gl = aCanvas.getContext("webgl");
|
| + debug("Check the imageBitmap of webgl.")
|
| + var webgl_canvas = document.getElementById("webgl");
|
| + var gl = webgl_canvas.getContext("webgl", {preserveDrawingBuffer: false});
|
| gl.clearColor(0.0, 1.0, 0.0, 1.0);
|
| gl.clear(gl.COLOR_BUFFER_BIT);
|
| + createImageBitmapAndCheck(webgl_canvas, false).then(function() {
|
| + if (window.testRunner) {
|
| + testRunner.displayAsyncThen(asyncTest);
|
| + } else {
|
| + window.requestAnimationFrame(asyncTest);
|
| + }
|
| + });
|
| + }
|
|
|
| - createImageBitmap(aCanvas).then(function (imageBitmap) {
|
| + function createImageBitmapAndCheck(webgl_canvas, discarded) {
|
| + return createImageBitmap(webgl_canvas).then(function (imageBitmap) {
|
| + ctx.clearRect(0, 0, 200, 200);
|
| ctx.drawImage(imageBitmap, 0, 0);
|
| - shouldBeGreen(50, 50);
|
| - shouldBeGreen(150, 150);
|
| - finishJSTest();
|
| + if (!discarded) {
|
| + shouldBeGreen(50, 50);
|
| + shouldBeGreen(150, 150);
|
| + } else {
|
| + shouldBeTransparent(50, 50);
|
| + shouldBeTransparent(150, 150);
|
| + }
|
| }, function() {
|
| testFailed("Promise was rejected.");
|
| finishJSTest();
|
| });
|
| }
|
| +
|
| + function asyncTest() {
|
| + debug("Check the imageBitmap of webgl in the next frame. drawingBuffer is discarded.")
|
| + var webgl_canvas = document.getElementById("webgl");
|
| + createImageBitmapAndCheck(webgl_canvas, true).then(function() {
|
| + finishJSTest();
|
| + });
|
| + }
|
| </script>
|
| </body>
|
| </html>
|
|
|