Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1011)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/canvas/webgl/context-lost.html

Issue 1601093008: Remove duplicated WebGL layout tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../../../resources/js-test.js"></script>
5 <script src="resources/webgl-test.js"></script>
6 <script src="resources/webgl-test-utils.js"></script>
7 <script>
8 if (window.internals)
9 window.internals.settings.setWebGLErrorsToConsoleEnabled(false);
10
11 var wtu;
12 var canvas;
13 var gl;
14 var shouldGenerateGLError;
15 var extensionName;
16 var extension;
17
18 var buffer;
19 var framebuffer;
20 var program;
21 var renderbuffer;
22 var shader;
23 var texture;
24 var uniformLocation;
25 var arrayBuffer;
26 var arrayBufferView
27 var image;
28 var video;
29 var canvas2d;
30 var ctx2d;
31 var imageData;
32 var float32array;
33 var int32array;
34
35 function init()
36 {
37 wtu = WebGLTestUtils;
38 canvas = document.getElementById("canvas");
39 gl = wtu.create3DContext(canvas);
40 shouldGenerateGLError = wtu.shouldGenerateGLError;
41
42 description("Tests behavior under a lost context");
43
44 if (window.initNonKhronosFramework) {
45 window.initNonKhronosFramework(true);
46 }
47
48 // call testValidContext() before checking for the extension, because this i s where we check
49 // for the isContextLost() method, which we want to do regardless of the ext ension's presence.
50 testValidContext();
51
52 extension = gl.getExtension("WEBGL_lose_context");
53 if (!extension) {
54 debug("Could not find lose_context extension under the following names: WEBGL_lose_context");
55 finishTest();
56 return false;
57 }
58
59 canvas.addEventListener("webglcontextlost", testLostContext, false);
60
61 loseContext();
62 }
63
64 function loseContext()
65 {
66 debug("");
67 debug("Lose context");
68
69 // Note: this will cause the context to be lost, but the
70 // webglcontextlost event listener to be queued.
71 extension.loseContext();
72 debug("");
73 }
74
75 function testValidContext()
76 {
77 debug("Test valid context");
78
79 shouldBeFalse("gl.isContextLost()");
80
81 arrayBuffer = new ArrayBuffer(4);
82 arrayBufferView = new Int8Array(arrayBuffer);
83
84 // Generate resources for testing.
85 buffer = gl.createBuffer();
86 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
87 framebuffer = gl.createFramebuffer();
88 gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
89 program = wtu.setupSimpleTextureProgram(gl);
90 renderbuffer = gl.createRenderbuffer();
91 gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
92 shader = gl.createShader(gl.VERTEX_SHADER);
93 texture = gl.createTexture();
94 gl.bindTexture(gl.TEXTURE_2D, texture);
95 shouldBe("gl.getError()", "gl.NO_ERROR");
96
97 // Test is queries that will later be false
98 shouldGenerateGLError(gl, gl.NO_ERROR, "gl.enable(gl.BLEND)");
99 shouldBeTrue("gl.isBuffer(buffer)");
100 shouldBeTrue("gl.isEnabled(gl.BLEND)");
101 shouldBeTrue("gl.isFramebuffer(framebuffer)");
102 shouldBeTrue("gl.isProgram(program)");
103 shouldBeTrue("gl.isRenderbuffer(renderbuffer)");
104 shouldBeTrue("gl.isShader(shader)");
105 shouldBeTrue("gl.isTexture(texture)");
106 }
107
108 function testLostContext()
109 {
110 debug("Test lost context");
111
112 // Functions with special return values.
113 shouldBeTrue("gl.isContextLost()");
114 shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
115 shouldBe("gl.getError()", "gl.NO_ERROR");
116 shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPP ORTED");
117 shouldBe("gl.getAttribLocation(program, 'u_modelViewProjMatrix')", "-1");
118 shouldBe("gl.getVertexAttribOffset(0, gl.VERTEX_ATTRIB_ARRAY_POINTER)", "0") ;
119
120 // Test the extension itself.
121 shouldGenerateGLError(gl, gl.INVALID_OPERATION, "extension.loseContext()");
122
123 image = document.createElement("img");
124 video = document.createElement("video");
125 canvas2d = document.createElement("canvas");
126 ctx2d = canvas2d.getContext("2d");
127 imageData = ctx2d.createImageData(1, 1);
128 float32array = new Float32Array(1);
129 int32array = new Int32Array(1);
130
131 // Functions returning void should return immediately.
132 // This is untestable, but we can at least be sure they cause no errors
133 // and the codepaths are exercised.
134 var voidTests = [
135 "gl.activeTexture(gl.TEXTURE0)",
136 "gl.attachShader(program, shader)",
137 "gl.bindBuffer(gl.ARRAY_BUFFER, buffer)",
138 "gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer)",
139 "gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer)",
140 "gl.bindTexture(gl.TEXTURE_2D, texture)",
141 "gl.blendColor(1.0, 1.0, 1.0, 1.0)",
142 "gl.blendEquation(gl.FUNC_ADD)",
143 "gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD)",
144 "gl.blendFunc(gl.ONE, gl.ONE)",
145 "gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE)",
146 "gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW)",
147 "gl.bufferData(gl.ARRAY_BUFFER, arrayBufferView, gl.STATIC_DRAW)",
148 "gl.bufferData(gl.ARRAY_BUFFER, arrayBuffer, gl.STATIC_DRAW)",
149 "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBufferView)",
150 "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBuffer)",
151 "gl.clear(gl.COLOR_BUFFER_BIT)",
152 "gl.clearColor(1, 1, 1, 1)",
153 "gl.clearDepth(1)",
154 "gl.clearStencil(0)",
155 "gl.colorMask(1, 1, 1, 1)",
156 "gl.compileShader(shader)",
157 "gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, 0, 0)",
158 "gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0)",
159 "gl.cullFace(gl.FRONT)",
160 "gl.deleteBuffer(buffer)",
161 "gl.deleteFramebuffer(framebuffer)",
162 "gl.deleteProgram(program)",
163 "gl.deleteRenderbuffer(renderbuffer)",
164 "gl.deleteShader(shader)",
165 "gl.deleteTexture(texture)",
166 "gl.depthFunc(gl.NEVER)",
167 "gl.depthMask(0)",
168 "gl.depthRange(0, 1)",
169 "gl.detachShader(program, shader)",
170 "gl.disable(gl.BLEND)",
171 "gl.disableVertexAttribArray(0)",
172 "gl.drawArrays(gl.POINTS, 0, 0)",
173 "gl.drawElements(gl.POINTS, 0, gl.UNSIGNED_SHORT, 0)",
174 "gl.enable(gl.BLEND)",
175 "gl.enableVertexAttribArray(0)",
176 "gl.finish()",
177 "gl.flush()",
178 "gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.REN DERBUFFER, renderbuffer)",
179 "gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTUR E_2D, texture, 0)",
180 "gl.frontFace(gl.CW)",
181 "gl.generateMipmap(gl.TEXTURE_2D)",
182 "gl.hint(gl.GENERATE_MIPMAP_HINT, gl.FASTEST)",
183 "gl.lineWidth(0)",
184 "gl.linkProgram(program)",
185 "gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0)",
186 "gl.polygonOffset(0, 0)",
187 "gl.readPixels(0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)",
188 "gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 0, 0)",
189 "gl.sampleCoverage(0, 0)",
190 "gl.scissor(0, 0, 0, 0)",
191 "gl.shaderSource(shader, '')",
192 "gl.stencilFunc(gl.NEVER, 0, 0)",
193 "gl.stencilFuncSeparate(gl.FRONT, gl.NEVER, 0, 0)",
194 "gl.stencilMask(0)",
195 "gl.stencilMaskSeparate(gl.FRONT, 0)",
196 "gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)",
197 "gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP)",
198 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, gl.RGBA, gl.UNSIGNED_ BYTE, arrayBufferView)",
199 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, ima geData)",
200 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, ima ge)",
201 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, can vas)",
202 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, vid eo)",
203 "gl.texParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)",
204 "gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)",
205 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYT E, arrayBufferView)",
206 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, ima geData)",
207 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, ima ge)",
208 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, can vas)",
209 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, vid eo)",
210 "gl.uniform1f(uniformLocation, 0)",
211 "gl.uniform1fv(uniformLocation, float32array)",
212 "gl.uniform1fv(uniformLocation, [0])",
213 "gl.uniform1i(uniformLocation, 0)",
214 "gl.uniform1iv(uniformLocation, int32array)",
215 "gl.uniform1iv(uniformLocation, [0])",
216 "gl.uniform2f(uniformLocation, 0, 0)",
217 "gl.uniform2fv(uniformLocation, float32array)",
218 "gl.uniform2fv(uniformLocation, [0, 0])",
219 "gl.uniform2i(uniformLocation, 0, 0)",
220 "gl.uniform2iv(uniformLocation, int32array)",
221 "gl.uniform2iv(uniformLocation, [0, 0])",
222 "gl.uniform3f(uniformLocation, 0, 0, 0)",
223 "gl.uniform3fv(uniformLocation, float32array)",
224 "gl.uniform3fv(uniformLocation, [0, 0, 0])",
225 "gl.uniform3i(uniformLocation, 0, 0, 0)",
226 "gl.uniform3iv(uniformLocation, int32array)",
227 "gl.uniform3iv(uniformLocation, [0, 0, 0])",
228 "gl.uniform4f(uniformLocation, 0, 0, 0, 0)",
229 "gl.uniform4fv(uniformLocation, float32array)",
230 "gl.uniform4fv(uniformLocation, [0, 0, 0, 0])",
231 "gl.uniform4i(uniformLocation, 0, 0, 0, 0)",
232 "gl.uniform4iv(uniformLocation, int32array)",
233 "gl.uniform4iv(uniformLocation, [0, 0, 0, 0])",
234 "gl.uniformMatrix2fv(uniformLocation, false, float32array)",
235 "gl.uniformMatrix2fv(uniformLocation, false, [0, 0, 0, 0])",
236 "gl.uniformMatrix3fv(uniformLocation, false, float32array)",
237 "gl.uniformMatrix3fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0] )",
238 "gl.uniformMatrix4fv(uniformLocation, false, float32array)",
239 "gl.uniformMatrix4fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])",
240 "gl.useProgram(program)",
241 "gl.validateProgram(program)",
242 "gl.vertexAttrib1f(0, 0)",
243 "gl.vertexAttrib1fv(0, float32array)",
244 "gl.vertexAttrib1fv(0, [0])",
245 "gl.vertexAttrib2f(0, 0, 0)",
246 "gl.vertexAttrib2fv(0, float32array)",
247 "gl.vertexAttrib2fv(0, [0, 0])",
248 "gl.vertexAttrib3f(0, 0, 0, 0)",
249 "gl.vertexAttrib3fv(0, float32array)",
250 "gl.vertexAttrib3fv(0, [0, 0, 0])",
251 "gl.vertexAttrib4f(0, 0, 0, 0, 0)",
252 "gl.vertexAttrib4fv(0, float32array)",
253 "gl.vertexAttrib4fv(0, [0, 0, 0, 0])",
254 "gl.vertexAttribPointer(0, 0, gl.FLOAT, false, 0, 0)",
255 "gl.viewport(0, 0, 0, 0)",
256 ];
257 for (var i = 0; i < voidTests.length; ++i) {
258 shouldGenerateGLError(gl, gl.NO_ERROR, voidTests[i]);
259 }
260
261 // Functions return nullable values should all return null.
262 var nullTests = [
263 "gl.createBuffer()",
264 "gl.createFramebuffer()",
265 "gl.createProgram()",
266 "gl.createRenderbuffer()",
267 "gl.createShader(gl.GL_VERTEX_SHADER)",
268 "gl.createTexture()",
269 "gl.getActiveAttrib(program, 0)",
270 "gl.getActiveUniform(program, 0)",
271 "gl.getAttachedShaders(program)",
272 "gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE)",
273 "gl.getContextAttributes()",
274 "gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMEN T0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)",
275 "gl.getParameter(gl.CURRENT_PROGRAM)",
276 "gl.getProgramInfoLog(program)",
277 "gl.getProgramParameter(program, gl.LINK_STATUS)",
278 "gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)",
279 "gl.getShaderInfoLog(shader)",
280 "gl.getShaderParameter(shader, gl.SHADER_TYPE)",
281 "gl.getShaderSource(shader)",
282 "gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S)",
283 "gl.getUniform(program, uniformLocation)",
284 "gl.getUniformLocation(program, 'vPosition')",
285 "gl.getVertexAttrib(0, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)",
286 "gl.getSupportedExtensions()",
287 "gl.getExtension('WEBGL_lose_context')",
288 ];
289 for (var i = 0; i < nullTests.length; ++i) {
290 shouldBeNull(nullTests[i]);
291 }
292
293 // "Is" queries should all return false.
294 shouldBeFalse("gl.isBuffer(buffer)");
295 shouldBeFalse("gl.isEnabled(gl.BLEND)");
296 shouldBeFalse("gl.isFramebuffer(framebuffer)");
297 shouldBeFalse("gl.isProgram(program)");
298 shouldBeFalse("gl.isRenderbuffer(renderbuffer)");
299 shouldBeFalse("gl.isShader(shader)");
300 shouldBeFalse("gl.isTexture(texture)");
301
302 shouldBe("gl.getError()", "gl.NO_ERROR");
303
304 debug("");
305
306 finishTest();
307 }
308
309 </script>
310 </head>
311 <body onload="init()">
312 <div id="description"></div>
313 <div id="console"></div>
314 <canvas id="canvas">
315 </body>
316 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698