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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/canvas/webgl/context-lost-restored.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 = WebGLTestUtils;
12 var canvas;
13 var gl;
14 var shouldGenerateGLError;
15 var extension;
16 var bufferObjects;
17 var program;
18 var texture;
19 var texColor = [255, 10, 20, 255];
20 var allowRestore;
21 var contextLostEventFired;
22 var contextRestoredEventFired;
23
24 function init()
25 {
26 if (window.initNonKhronosFramework) {
27 window.initNonKhronosFramework(true);
28 }
29
30 description("Tests behavior under a restored context.");
31
32 shouldGenerateGLError = wtu.shouldGenerateGLError;
33 testLosingContext();
34 }
35
36 function setupTest()
37 {
38 canvas = document.createElement("canvas");
39 canvas.width = 1;
40 canvas.height = 1;
41 gl = wtu.create3DContext(canvas);
42 extension = gl.getExtension("WEBGL_lose_context");
43 if (!extension) {
44 debug("Could not find lose_context extension under the following names: WEBGL_lose_context");
45 return false;
46 }
47 return true;
48 }
49
50 function testLosingContext()
51 {
52 if (!setupTest())
53 finishTest();
54
55 debug("Test losing a context and inability to restore it.");
56
57 canvas.addEventListener("webglcontextlost", function(e) {
58 testLostContext(e);
59 // restore the context after this event has exited.
60 setTimeout(function() {
61 // we didn't call prevent default so we should not be able to restore t he context
62 shouldGenerateGLError(gl, gl.INVALID_OPERATION, "extension.restoreConte xt()");
63 testLosingAndRestoringContext();
64 }, 0);
65 });
66 canvas.addEventListener("webglcontextrestored", testShouldNotRestoreContext) ;
67 allowRestore = false;
68 contextLostEventFired = false;
69 contextRestoredEventFired = false;
70
71 testOriginalContext();
72 extension.loseContext();
73 // The context should be lost immediately.
74 shouldBeTrue("gl.isContextLost()");
75 shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
76 shouldBe("gl.getError()", "gl.NO_ERROR");
77 // gl methods should be no-ops
78 shouldGenerateGLError(gl, gl.NO_ERROR, "gl.blendFunc(gl.TEXTURE_2D, gl.TEXTU RE_CUBE_MAP)");
79 // but the event should not have been fired.
80 shouldBeFalse("contextLostEventFired");
81 }
82
83 function testLosingAndRestoringContext()
84 {
85 if (!setupTest())
86 finishTest();
87
88 debug("");
89 debug("Test losing and restoring a context.");
90
91 canvas.addEventListener("webglcontextlost", function(e) {
92 testLostContext(e);
93 // restore the context after this event has exited.
94 setTimeout(function() {
95 shouldGenerateGLError(gl, gl.NO_ERROR, "extension.restoreContext()");
96 // The context should still be lost. It will not get restored until the
97 // webglrestorecontext event is fired.
98 shouldBeTrue("gl.isContextLost()");
99 shouldBe("gl.getError()", "gl.NO_ERROR");
100 // gl methods should still be no-ops
101 shouldGenerateGLError(gl, gl.NO_ERROR, "gl.blendFunc(gl.TEXTURE_2D, gl.T EXTURE_CUBE_MAP)");
102 }, 0);
103 });
104 canvas.addEventListener("webglcontextrestored", function() {
105 testRestoredContext();
106 finishTest();
107 });
108 allowRestore = true;
109 contextLostEventFired = false;
110 contextRestoredEventFired = false;
111
112 testOriginalContext();
113 extension.loseContext();
114 // The context should be lost immediately.
115 shouldBeTrue("gl.isContextLost()");
116 shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
117 shouldBe("gl.getError()", "gl.NO_ERROR");
118 // gl methods should be no-ops
119 shouldGenerateGLError(gl, gl.NO_ERROR, "gl.blendFunc(gl.TEXTURE_2D, gl.TEXTU RE_CUBE_MAP)");
120 // but the event should not have been fired.
121 shouldBeFalse("contextLostEventFired");
122 }
123
124 function testRendering()
125 {
126 gl.clearColor(0, 0, 0, 255);
127 gl.colorMask(1, 1, 1, 0);
128 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
129
130 program = wtu.setupSimpleTextureProgram(gl);
131 bufferObjects = wtu.setupUnitQuad(gl);
132 texture = wtu.createColoredTexture(gl, canvas.width, canvas.height, texColor );
133
134 gl.uniform1i(gl.getUniformLocation(program, "tex"), 0);
135 wtu.drawQuad(gl, [0, 0, 0, 255]);
136
137 var compare = texColor.slice(0, 3);
138 wtu.checkCanvasRect(gl, 0, 0, canvas.width, canvas.height, compare, "shouldB e " + compare);
139
140 shouldBe("gl.getError()", "gl.NO_ERROR");
141 }
142
143 function testOriginalContext()
144 {
145 debug("Test valid context");
146 shouldBeFalse("gl.isContextLost()");
147 shouldBe("gl.getError()", "gl.NO_ERROR");
148 testRendering();
149 debug("");
150 }
151
152 function testLostContext(e)
153 {
154 debug("Test lost context");
155 shouldBeFalse("contextLostEventFired");
156 contextLostEventFired = true;
157 shouldBeTrue("gl.isContextLost()");
158 shouldBe("gl.getError()", "gl.NO_ERROR");
159 debug("");
160 if (allowRestore)
161 e.preventDefault();
162 }
163
164 function testShouldNotRestoreContext(e)
165 {
166 testFailed("Should not restore the context unless preventDefault is called o n the context lost event");
167 debug("");
168 }
169
170 function testResources(expected)
171 {
172 var tests = [
173 "gl.bindTexture(gl.TEXTURE_2D, texture)",
174 "gl.useProgram(program)",
175 "gl.bindBuffer(gl.ARRAY_BUFFER, bufferObjects[0])",
176 ];
177
178 for (var i = 0; i < tests.length; ++i)
179 shouldGenerateGLError(gl, expected, tests[i]);
180 }
181
182 function testRestoredContext()
183 {
184 debug("Test restored context");
185 shouldBeFalse("contextRestoredEventFired");
186 contextRestoredEventFired = true;
187 shouldBeFalse("gl.isContextLost()");
188 shouldBe("gl.getError()", "gl.NO_ERROR");
189
190 // Validate that using old resources fails.
191 testResources(gl.INVALID_OPERATION);
192
193 testRendering();
194
195 // Validate new resources created in testRendering().
196 testResources(gl.NO_ERROR);
197 debug("");
198 }
199
200
201 </script>
202 </head>
203 <body onload="init()">
204 <div id="description"></div>
205 <div id="console"></div>
206 </body>
207 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698