Out of bounds write in canvas.toDataURL
[WebKit-https.git] / LayoutTests / fast / canvas / webgl / toDataURL-unpremultipliedAlpha.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>Test toDataURL to JPEG on a non-premultipledAlpha WebGL context.</title>
6 <script src="../../../resources/js-test.js"></script>
7 <script src="resources/webgl-test.js"> </script>
8 <script src="resources/webgl-test-utils.js"> </script>
9 </head>
10 <body>
11 <div id="description"></div><div id="console"></div>
12 <script>
13 var wtu = WebGLTestUtils;
14
15 if (window.testRunner)
16     testRunner.overridePreference("WebKitWebGLEnabled", "1");
17
18 description("Test toDataURL on a non-premultipledAlpha WebGL context.");
19 var canvas = document.createElement("canvas");
20 var gl = wtu.create3DContext(canvas, { premultipliedAlpha: false, preserveDrawingBuffer: true });
21 shouldBeUndefined('gl.getContextAttributes().premultipledAlpha');
22 shouldBeTrue('gl.getContextAttributes().preserveDrawingBuffer');
23
24 var program = wtu.setupTexturedQuad(gl);
25
26 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
27
28 debug("");
29 debug("Fill the WebGL canvas with solid white at 50% transparency.")
30 var tex = gl.createTexture();
31 wtu.fillTexture(gl, tex, 2, 2, [255, 255, 255, 128], 0);
32 var loc = gl.getUniformLocation(program, "tex");
33 gl.uniform1i(loc, 0);
34 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
35 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
36 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
37 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
38
39 wtu.drawQuad(gl);
40 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from drawing.");
41
42 debug("Convert to a JPEG data URL.")
43 var imageUrl = canvas.toDataURL("image/jpeg");
44 shouldBeTrue('imageUrl && imageUrl.length > 0');
45 var image = document.createElement("img");
46 image.addEventListener("load", function() {
47     debug("Append the image to the document.")
48     document.body.appendChild(image);
49     finishJSTest();
50 }, false);
51 image.src = imageUrl;
52
53
54 </script>
55 </body>
56 </html>