Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-commit-frameless-doc.html |
| diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-commit-frameless-doc.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-commit-frameless-doc.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..10542b104c4ec607a5ba51fcbfc7e6fbe1ab70d0 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-commit-frameless-doc.html |
| @@ -0,0 +1,53 @@ |
| +<!DOCTYPE html> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| +<script> |
| +// This test aims to ensure that OffscreenCanvas.commit() does not |
|
xlai (Olivia)
2017/01/24 20:54:12
Changing the pixel test to layout test.
|
| +// crash for a placeholder canvas under frameless document. |
| +// Since the document is invisible, the resultant image should be |
| +// not visible too. But users must be able to draw to the OffscreenCanvas |
| +// and do canvas-operations on the frameless placeholder canvas. |
| +// TODO(crbug.com/683172): Modify this test after handling for |
| +// frameless canvas is done. |
| +function createFramelessCanvas() { |
| + var framelessDoc = document.implementation.createHTMLDocument("frameless"); |
| + var canvas = framelessDoc.createElement("canvas"); |
| + canvas.width = 50; |
| + canvas.height = 50; |
| + return canvas; |
| +} |
| + |
| +function transferControlAndCommit(canvas) { |
| + var offscreenCanvas = canvas.transferControlToOffscreen(); |
| + var ctx = offscreenCanvas.getContext("2d"); |
| + ctx.fillStyle = "blue"; |
| + ctx.fillRect(0, 0, 50, 50); |
| + ctx.commit(); |
| + return offscreenCanvas; |
| +} |
| + |
| +test(function() { |
| + var offscreenCanvas = transferControlAndCommit(createFramelessCanvas()); |
| + var ctx = offscreenCanvas.getContext("2d"); |
| + var pixels = ctx.getImageData(0, 0, 1, 1).data; |
| + assert_array_equals(pixels, [0, 0, 255, 255]); |
| +}, "Verify that the getImageData() works on the OffscreenCanvas context of a frameless canvas"); |
| + |
| +async_test(function(t) { |
| + var canvas = createFramelessCanvas(); |
| + var offscreenCanvas = transferControlAndCommit(canvas); |
| + |
| + var c = document.createElement("canvas"); |
| + c.width = 50; |
| + c.height = 50; |
| + var ctx2 = c.getContext("2d"); |
| + setTimeout(function() { |
| + ctx2.drawImage(canvas, 0, 0); |
| + var pixels = ctx2.getImageData(0, 0, 1, 1).data; |
| + t.step(function() { |
| + assert_array_equals(pixels, [0, 0, 255, 255]); |
| + }); |
| + t.done(); |
| + }, 0); |
| +}, "Verify that the placeholder canvas can be used as an image source"); |
| +</script> |