chromium/third_party/blink/web_tests/fast/canvas/webgl/draw-webgl-to-canvas-2d-after-to-data-url-without-context.html

<!DOCTYPE html>
<html>
<body>
<span id="description" style="color: white">
Everything is same to draw-webgl-to-canvas-2d.html except for calling
redundant toDataURL().
Canvas spec allows to call toDataURL() without a context. Some bad things
can happen if we call toDataURL() without a context and then create a context
and then call toDataURL() again.
</span>
<canvas id="preserve-canvas3d" width="100" height="100"></canvas>
<canvas id="preserve-canvas2d" width="100" height="100"></canvas>
<canvas id="nonpreserve-canvas3d" width="100" height="100"></canvas>
<canvas id="nonpreserve-canvas2d" width="100" height="100"></canvas>
<script src="../../../resources/js-test.js"></script>
<script src="../../../resources/run-after-layout-and-paint.js"></script>
<script src="resources/draw-webgl-to-canvas-2d.js"></script>
<script>
function createContexts() {
    var preserve_canvas2d = document.getElementById("preserve-canvas2d");
    preserve_canvas2d.toDataURL();
    preserve_ctx2D = preserve_canvas2d.getContext("2d", {willReadFrequently: true});
    preserve_canvas2d.toDataURL();
    preserve_canvas3D = document.getElementById('preserve-canvas3d');
    preserve_canvas3D.toDataURL();
    preserve_gl = preserve_canvas3D.getContext('webgl', {'preserveDrawingBuffer': true});
    preserve_canvas3D.toDataURL();

    var nonpreserve_canvas2d = document.getElementById("nonpreserve-canvas2d");
    nonpreserve_canvas2d.toDataURL();
    nonpreserve_ctx2D = nonpreserve_canvas2d.getContext("2d", {willReadFrequently: true});
    nonpreserve_canvas2d.toDataURL();
    nonpreserve_canvas3D = document.getElementById('nonpreserve-canvas3d');
    nonpreserve_canvas3D.toDataURL();
    nonpreserve_gl = nonpreserve_canvas3D.getContext('webgl', {'preserveDrawingBuffer': false});
    nonpreserve_canvas3D.toDataURL();
}
</script>
</body>
</html>