OLD | NEW |
| (Empty) |
1 <html> | |
2 <head> | |
3 <script src="../../../http/tests/inspector/inspector-test.js"></script> | |
4 <script> | |
5 | |
6 function wasError(gl) | |
7 { | |
8 var result = false; | |
9 while (gl.getError() !== gl.NO_ERROR) | |
10 result = true; | |
11 return result; | |
12 } | |
13 | |
14 function createWebGLContext() | |
15 { | |
16 var canvas = document.createElement("canvas"); | |
17 var contextIds = ["experimental-webgl", "webkit-3d", "3d"]; | |
18 for (var i = 0, contextId; contextId = contextIds[i]; ++i) { | |
19 var gl = canvas.getContext(contextId); | |
20 if (gl) | |
21 return gl; | |
22 } | |
23 output("ERROR: Could not create a WebGL context."); | |
24 return null; | |
25 } | |
26 | |
27 WebGLRenderingContextResource = {}; | |
28 | |
29 /** | |
30 * @const | |
31 * @type {Array.<string>} | |
32 */ | |
33 WebGLRenderingContextResource.GLCapabilities = [ | |
34 "BLEND", | |
35 "CULL_FACE", | |
36 "DEPTH_TEST", | |
37 "DITHER", | |
38 "POLYGON_OFFSET_FILL", | |
39 "SAMPLE_ALPHA_TO_COVERAGE", | |
40 "SAMPLE_COVERAGE", | |
41 "SCISSOR_TEST", | |
42 "STENCIL_TEST" | |
43 ]; | |
44 | |
45 /** | |
46 * @const | |
47 * @type {Array.<string>} | |
48 */ | |
49 WebGLRenderingContextResource.PixelStoreParameters = [ | |
50 "PACK_ALIGNMENT", | |
51 "UNPACK_ALIGNMENT", | |
52 "UNPACK_COLORSPACE_CONVERSION_WEBGL", | |
53 "UNPACK_FLIP_Y_WEBGL", | |
54 "UNPACK_PREMULTIPLY_ALPHA_WEBGL" | |
55 ]; | |
56 | |
57 /** | |
58 * @const | |
59 * @type {Array.<string>} | |
60 */ | |
61 WebGLRenderingContextResource.StateParameters = [ | |
62 "ACTIVE_TEXTURE", | |
63 "ARRAY_BUFFER_BINDING", | |
64 "BLEND_COLOR", | |
65 "BLEND_DST_ALPHA", | |
66 "BLEND_DST_RGB", | |
67 "BLEND_EQUATION_ALPHA", | |
68 "BLEND_EQUATION_RGB", | |
69 "BLEND_SRC_ALPHA", | |
70 "BLEND_SRC_RGB", | |
71 "COLOR_CLEAR_VALUE", | |
72 "COLOR_WRITEMASK", | |
73 "CULL_FACE_MODE", | |
74 "CURRENT_PROGRAM", | |
75 "DEPTH_CLEAR_VALUE", | |
76 "DEPTH_FUNC", | |
77 "DEPTH_RANGE", | |
78 "DEPTH_WRITEMASK", | |
79 "ELEMENT_ARRAY_BUFFER_BINDING", | |
80 "FRAMEBUFFER_BINDING", | |
81 "FRONT_FACE", | |
82 "GENERATE_MIPMAP_HINT", | |
83 "LINE_WIDTH", | |
84 "PACK_ALIGNMENT", | |
85 "POLYGON_OFFSET_FACTOR", | |
86 "POLYGON_OFFSET_UNITS", | |
87 "RENDERBUFFER_BINDING", | |
88 "SAMPLE_COVERAGE_INVERT", | |
89 "SAMPLE_COVERAGE_VALUE", | |
90 "SCISSOR_BOX", | |
91 "STENCIL_BACK_FAIL", | |
92 "STENCIL_BACK_FUNC", | |
93 "STENCIL_BACK_PASS_DEPTH_FAIL", | |
94 "STENCIL_BACK_PASS_DEPTH_PASS", | |
95 "STENCIL_BACK_REF", | |
96 "STENCIL_BACK_VALUE_MASK", | |
97 "STENCIL_BACK_WRITEMASK", | |
98 "STENCIL_CLEAR_VALUE", | |
99 "STENCIL_FAIL", | |
100 "STENCIL_FUNC", | |
101 "STENCIL_PASS_DEPTH_FAIL", | |
102 "STENCIL_PASS_DEPTH_PASS", | |
103 "STENCIL_REF", | |
104 "STENCIL_VALUE_MASK", | |
105 "STENCIL_WRITEMASK", | |
106 "UNPACK_ALIGNMENT", | |
107 "UNPACK_COLORSPACE_CONVERSION_WEBGL", | |
108 "UNPACK_FLIP_Y_WEBGL", | |
109 "UNPACK_PREMULTIPLY_ALPHA_WEBGL", | |
110 "VIEWPORT" | |
111 ]; | |
112 | |
113 WebGLRenderingContextResource.TextureBindings = [ | |
114 "TEXTURE_BINDING_2D", | |
115 "TEXTURE_BINDING_CUBE_MAP" | |
116 ]; | |
117 | |
118 function test() | |
119 { | |
120 var gl = createWebGLContext(); | |
121 if (!gl) | |
122 return; | |
123 | |
124 var constantNames = []; | |
125 for (var property in gl) { | |
126 if (/^[A-Z0-9_]+$/.test(property)) | |
127 constantNames.push(property); | |
128 } | |
129 constantNames.sort(); | |
130 | |
131 output("Constants for gl.isEnabled():"); | |
132 constantNames.forEach(function(property) { | |
133 wasError(gl); | |
134 gl.isEnabled(gl[property]); | |
135 if (!wasError(gl)) | |
136 output(property); | |
137 }); | |
138 | |
139 output("\nConstants for gl.pixelStorei():"); | |
140 constantNames.forEach(function(property) { | |
141 wasError(gl); | |
142 var value = gl.getParameter(gl[property]); | |
143 if (wasError(gl)) | |
144 return; | |
145 gl.pixelStorei(gl[property], value); | |
146 if (!wasError(gl)) | |
147 output(property); | |
148 }); | |
149 | |
150 output("\nConstants for gl.getTexParameter():"); | |
151 var texture = gl.createTexture(); | |
152 gl.bindTexture(gl.TEXTURE_2D, texture); | |
153 constantNames.forEach(function(property) { | |
154 wasError(gl); | |
155 gl.getTexParameter(gl.TEXTURE_2D, gl[property]); | |
156 if (!wasError(gl)) | |
157 output(property); | |
158 }); | |
159 | |
160 output("\nConstants for gl.getVertexAttrib():"); | |
161 constantNames.forEach(function(property) { | |
162 wasError(gl); | |
163 gl.getVertexAttrib(0, gl[property]); | |
164 if (!wasError(gl)) | |
165 output(property); | |
166 }); | |
167 | |
168 output("\nConstants for gl.getVertexAttribOffset():"); | |
169 constantNames.forEach(function(property) { | |
170 wasError(gl); | |
171 gl.getVertexAttribOffset(0, gl[property]); | |
172 if (!wasError(gl)) | |
173 output(property); | |
174 }); | |
175 | |
176 output("\nConstants for gl.getParameter() that we do not track in InjectedSc
riptModule:"); | |
177 constantNames.forEach(function(property) { | |
178 // Special case for equal constants BLEND_EQUATION and BLEND_EQUATION_RG
B. | |
179 if (property === "BLEND_EQUATION" && gl.BLEND_EQUATION === gl.BLEND_EQUA
TION_RGB) | |
180 return; | |
181 if (WebGLRenderingContextResource.GLCapabilities.indexOf(property) !== -
1) | |
182 return; | |
183 if (WebGLRenderingContextResource.PixelStoreParameters.indexOf(property)
!== -1) | |
184 return; | |
185 if (WebGLRenderingContextResource.StateParameters.indexOf(property) !==
-1) | |
186 return; | |
187 if (WebGLRenderingContextResource.TextureBindings.indexOf(property) !==
-1) | |
188 return; | |
189 wasError(gl); | |
190 gl.getParameter(gl[property]); | |
191 if (!wasError(gl)) | |
192 output(property); | |
193 }); | |
194 } | |
195 | |
196 function runTest() | |
197 { | |
198 if (window.testRunner) { | |
199 testRunner.overridePreference("WebKitWebGLEnabled", "1"); | |
200 testRunner.dumpAsText(); | |
201 testRunner.waitUntilDone(); | |
202 } | |
203 if (window.internals) | |
204 window.internals.settings.setWebGLErrorsToConsoleEnabled(false); | |
205 try { | |
206 test(); | |
207 } finally { | |
208 if (window.testRunner) | |
209 testRunner.notifyDone(); | |
210 } | |
211 } | |
212 | |
213 </script> | |
214 </head> | |
215 <body onload="runTest()"> | |
216 <p> | |
217 Test to catch WebGL API changes. | |
218 If this test should ever fail, we should re-examine the WebGL state saving/resto
ring logic in the | |
219 InjectedScriptModule to include any latest changes to the API. | |
220 | |
221 </p> | |
222 </body> | |
223 </html> | |
OLD | NEW |