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

Side by Side Diff: conformance/context/context-lost-restored.html

Issue 8342021: Add webgl conformance tests r15841. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/webgl/sdk/tests/
Patch Set: Created 9 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « conformance/context/context-lost.html ('k') | conformance/context/context-type-test.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
6 <script src="../../resources/js-test-pre.js"></script>
7 <script src="../resources/webgl-test.js"></script>
8 <script src="../resources/webgl-test-utils.js"></script>
9 <script>
10 var wtu = WebGLTestUtils;
11 var canvas;
12 var gl;
13 var shouldGenerateGLError;
14 var extension_name = "WEBKIT_lose_context";
15 var extension;
16 var bufferObjects;
17 var program;
18 var texture;
19 var texColor = [255, 10, 20, 255];
20 var allowRestore;
21
22 function init()
23 {
24 if (window.initNonKhronosFramework) {
25 window.initNonKhronosFramework(true);
26 }
27
28 description("Tests behavior under a restored context.");
29
30 shouldGenerateGLError = wtu.shouldGenerateGLError;
31 runTests();
32 }
33
34 function runTests()
35 {
36 testLosingContext();
37 testLosingAndRestoringContext();
38
39 finish();
40 }
41
42 function setupTest()
43 {
44 canvas = document.createElement("canvas");
45 canvas.width = 1;
46 canvas.height = 1;
47 gl = wtu.create3DContext(canvas);
48 extension = gl.getExtension(extension_name);
49 if (!extension) {
50 debug(extension_name + " extension not found.");
51 return false;
52 }
53 return true;
54 }
55
56 function testLosingContext()
57 {
58 if (!setupTest())
59 return;
60
61 debug("Test losing a context and inability to restore it.");
62
63 canvas.addEventListener("webglcontextlost", testLostContext);
64 canvas.addEventListener("webglcontextrestored", testShouldNotRestoreContext) ;
65 allowRestore = false;
66
67 testOriginalContext();
68 extension.loseContext();
69 shouldGenerateGLError(gl, gl.INVALID_OPERATION, "extension.restoreContext()" );
70 debug("");
71 }
72
73 function testLosingAndRestoringContext()
74 {
75 if (!setupTest())
76 return;
77
78 debug("Test losing and restoring a context.");
79
80 canvas.addEventListener("webglcontextlost", testLostContext);
81 canvas.addEventListener("webglcontextrestored", testRestoredContext);
82 allowRestore = true;
83
84 testOriginalContext();
85 extension.loseContext();
86 shouldGenerateGLError(gl, gl.NO_ERROR, "extension.restoreContext()");
87 debug("");
88 }
89
90 function testRendering()
91 {
92 gl.clearColor(0, 0, 0, 255);
93 gl.colorMask(1, 1, 1, 0);
94 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
95
96 program = wtu.setupSimpleTextureProgram(gl);
97 bufferObjects = wtu.setupUnitQuad(gl);
98 texture = wtu.createColoredTexture(gl, canvas.width, canvas.height, texColor );
99
100 gl.uniform1i(gl.getUniformLocation(program, "tex"), 0);
101 wtu.drawQuad(gl, [0, 0, 0, 255]);
102
103 var compare = texColor.slice(0, 3);
104 wtu.checkCanvasRect(gl, 0, 0, canvas.width, canvas.height, compare, "shouldB e " + compare);
105
106 shouldBe("gl.getError()", "gl.NO_ERROR");
107 }
108
109 function testOriginalContext()
110 {
111 debug("Test valid context");
112 shouldBeFalse("gl.isContextLost()");
113 shouldBe("gl.getError()", "gl.NO_ERROR");
114 testRendering();
115 debug("");
116 }
117
118 function testLostContext(e)
119 {
120 debug("Test lost context");
121 shouldBeTrue("gl.isContextLost()");
122 shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
123 shouldBe("gl.getError()", "gl.NO_ERROR");
124 debug("");
125 if (allowRestore)
126 e.preventDefault();
127 }
128
129 function testShouldNotRestoreContext(e)
130 {
131 testFailed("Should not restore the context unless preventDefault is called o n the context lost event");
132 debug("");
133 }
134
135 function testResources(expected)
136 {
137 var tests = [
138 "gl.bindTexture(gl.TEXTURE_2D, texture)",
139 "gl.useProgram(program)",
140 "gl.bindBuffer(gl.ARRAY_BUFFER, bufferObjects[0])",
141 ];
142
143 for (var i = 0; i < tests.length; ++i)
144 shouldGenerateGLError(gl, expected, tests[i]);
145 }
146
147 function testRestoredContext()
148 {
149 debug("Test restored context");
150 shouldBeFalse("gl.isContextLost()");
151 shouldBe("gl.getError()", "gl.NO_ERROR");
152
153 // Validate that using old resources fails.
154 testResources(gl.INVALID_OPERATION);
155
156 testRendering();
157
158 // Validate new resources created in testRendering().
159 testResources(gl.NO_ERROR);
160 debug("");
161 }
162
163 function finish() {
164 successfullyParsed = true;
165 var epilogue = document.createElement("script");
166 epilogue.onload = function() {
167 if (window.nonKhronosFrameworkNotifyDone)
168 window.nonKhronosFrameworkNotifyDone();
169 };
170 epilogue.src = "../../resources/js-test-post.js";
171 document.body.appendChild(epilogue);
172 }
173
174 </script>
175 </head>
176 <body onload="init()">
177 <div id="description"></div>
178 <div id="console"></div>
179 </body>
180 </html>
OLDNEW
« no previous file with comments | « conformance/context/context-lost.html ('k') | conformance/context/context-type-test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698