Index: LayoutTests/fast/canvas/webgl/canvas-to-data-url.html |
diff --git a/LayoutTests/fast/canvas/webgl/canvas-to-data-url.html b/LayoutTests/fast/canvas/webgl/canvas-to-data-url.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..20ab459ad34296635efdb664fc9f319f347225f9 |
--- /dev/null |
+++ b/LayoutTests/fast/canvas/webgl/canvas-to-data-url.html |
@@ -0,0 +1,60 @@ |
+<!DOCTYPE html> |
+<html> |
+<body> |
+<canvas id="preserve-canvas3d" width="10" height="10"></canvas> |
+<canvas id="nonpreserve-canvas3d" width="10" height="10"></canvas> |
+<script src="../../../resources/js-test.js"></script> |
+<script> |
+if (window.testRunner) { |
+ testRunner.dumpAsText(); |
+ testRunner.waitUntilDone(); |
+} |
+ |
+var preserve_canvas3D; |
+var nonpreserve_canvas3D; |
+ |
+function renderWebGL(gl) { |
+ gl.clearColor(0.5, 1, 0.3, 0.1); |
+ gl.clear(gl.COLOR_BUFFER_BIT); |
+} |
+ |
+function asyncTest() { |
+ debug("Check if back buffer (toDataURL) is equal to front buffer (getImageSourceURL) one frame after drawing webgl contents.") |
+ debug("1) when drawingBuffer is preserved.") |
+ shouldBeTrue("preserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(preserve_canvas3D)"); |
+ debug("2) when drawingBuffer is not preserved. They must be different.") |
+ shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') != window.internals.getImageSourceURL(nonpreserve_canvas3D)"); |
+ if (window.testRunner) |
+ testRunner.notifyDone(); |
+} |
+ |
+function startTestAfterFirstPaint() { |
+ preserve_canvas3D = document.getElementById('preserve-canvas3d'); |
+ var preserve_gl = preserve_canvas3D.getContext('webgl', {preserveDrawingBuffer: true, premultipliedAlpha: false}); |
+ nonpreserve_canvas3D = document.getElementById('nonpreserve-canvas3d'); |
+ var nonpreserve_gl = nonpreserve_canvas3D.getContext('webgl', {preserveDrawingBuffer: false, premultipliedAlpha: false}); |
+ |
+ // prepare webgl contents. |
+ renderWebGL(preserve_gl); |
+ renderWebGL(nonpreserve_gl); |
+ |
+ debug("Check if back buffer (toDataURL) is equal to front buffer (getImageSourceURL)") |
+ debug("1) when drawingBuffer is preserved.") |
+ shouldBeTrue("preserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(preserve_canvas3D)"); |
+ debug("2) when drawingBuffer is not preserved.") |
+ shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(nonpreserve_canvas3D)"); |
+ |
+ if (window.testRunner) { |
+ testRunner.waitUntilDone(); |
+ testRunner.displayAsyncThen(asyncTest); |
+ } else { |
+ window.requestAnimationFrame(asyncTest); |
+ } |
+} |
+ |
+window.onload = function () { |
+ window.requestAnimationFrame(startTestAfterFirstPaint); |
+} |
+</script> |
+</body> |
+</html> |