blob: 2a66980512404f086628e040a2650554b956b52e [file] [log] [blame]
<!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 src="../../resources/run-after-layout-and-paint.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') == internals.getImageSourceURL(preserve_canvas3D)");
debug("2) when drawingBuffer is not preserved. They must be different.")
shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') != 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') == internals.getImageSourceURL(preserve_canvas3D)");
debug("2) when drawingBuffer is not preserved.")
shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(nonpreserve_canvas3D)");
runAfterLayoutAndPaint(asyncTest);
}
window.onload = function () {
window.requestAnimationFrame(startTestAfterFirstPaint);
}
</script>
</body>
</html>