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

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

Issue 2490443002: Make OffscreenCanvas an EventTarget (Closed)
Patch Set: pass API layout tests Created 4 years, 1 month 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/testharness.js"></script>
5 <script src="../../../resources/testharnessreport.js"></script>
6 <script src="./resources/webgl-test-utils-full.js"></script>
7 </head>
8
9 <script id="myWorker" type="text/worker">
10 var canvas;
11 var gl;
12 var extensionName;
13 var extension;
14
15 var buffer;
16 var framebuffer;
17 var renderbuffer;
18 var program;
19 var shader;
20 var texture;
21 var uniformLocation;
22 var arrayBuffer;
23 var arrayBufferView;
24 var imageData;
25 var float32array;
26 var int32array;
27 var OES_vertex_array_object;
28 var vertexArrayObject;
29
30 var validContextResults;
31 var lostContextResults;
32
33 function compareGLError(glError, evalStr)
34 {
35 var exception;
36 try {
37 eval(evalStr);
38 } catch (e) {
39 exception = e;
40 }
41 if (exception) {
42 return false;
43 } else {
44 if (gl.getError() == glError)
45 return true;
46 return false;
47 }
48 }
49
50 var simpleTextureVertexShader = [
51 'attribute vec4 vPosition;',
52 'attribute vec2 texCoord0;',
53 'varying vec2 texCoord;',
54 'void main() {',
55 ' gl_Position = vPosition;',
56 ' texCoord = texCoord0;',
57 '}'].join('\n');
58
59 var simpleTextureFragmentShader = [
60 'precision mediump float;',
61 'uniform sampler2D tex;',
62 'varying vec2 texCoord;',
63 'void main() {',
64 ' gl_FragData[0] = texture2D(tex, texCoord);',
65 '}'].join('\n');
66
67 function getShader(gl, shaderStr, type)
68 {
69 var shader = gl.createShader(type);
70 gl.shaderSource(shader, shaderStr);
71 gl.compileShader(shader);
72
73 if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS))
74 return null;
75 return shader;
76 }
77
78 function setupProgram(gl, shaders, opt_attribs, opt_locations)
79 {
80 var vertexShader = getShader(gl, simpleTextureVertexShader, gl.VERTEX_SHADER);
81 var fragmentShader = getShader(gl, simpleTextureFragmentShader, gl.FRAGMENT_SH ADER);
82 var program = gl.createProgram();
83 gl.attachShader(program, vertexShader);
84 gl.attachShader(program, fragmentShader);
85
86 if (opt_attribs) {
87 for (var ii = 0; ii < opt_attribs.length; ++ii) {
88 gl.bindAttribLocation(
89 program,
90 opt_locations ? opt_locations[ii] : ii,
91 opt_attribs[ii]);
92 }
93 }
94 gl.linkProgram(program);
95
96 // Check the link status
97 var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
98 if (!linked) {
99 // something went wrong with the link
100 gl.deleteProgram(program);
101 return null;
102 }
103 gl.useProgram(program);
104 return program;
105 }
106
107 function setupSimpleTextureProgram(gl, opt_positionLocation, opt_texcoordLocatio n)
108 {
109 opt_positionLocation = opt_positionLocation || 0;
110 opt_texcoordLocation = opt_texcoordLocation || 1;
111 return setupProgram(gl,
112 [simpleTextureVertexShader, simpleTextureFragmentShader],
113 ['vPosition', 'texCoord0'],
114 [opt_positionLocation, opt_texcoordLocation]);
115 }
116
117 function testValidContext()
118 {
119 // Purposely make all results true
120 var re1 = !(gl.isContextLost());
121
122 arrayBuffer = new ArrayBuffer(4);
123 arrayBufferView = new Int8Array(arrayBuffer);
124
125 // Generate resources for testing.
126 buffer = gl.createBuffer();
127 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
128 framebuffer = gl.createFramebuffer();
129 gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
130 program = setupSimpleTextureProgram(gl);
131 renderbuffer = gl.createRenderbuffer();
132 gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
133 shader = gl.createShader(gl.VERTEX_SHADER);
134 texture = gl.createTexture();
135 gl.bindTexture(gl.TEXTURE_2D, texture);
136 var re2 = (gl.getError() == gl.NO_ERROR);
137
138 // Test is queries that will later be false
139 var re3 = compareGLError(gl.NO_ERROR, "gl.enable(gl.BLEND)");
140 var re4 = gl.isBuffer(buffer);
141 var re5 = gl.isEnabled(gl.BLEND);
142 var re6 = gl.isFramebuffer(framebuffer);
143 var re7 = gl.isProgram(program);
144 var re8 = gl.isRenderbuffer(renderbuffer);
145 var re9 = gl.isShader(shader);
146 var re10 = gl.isTexture(texture);
147
148 validContextResults = [re1, re2, re3, re4, re5, re6, re7, re8, re9, re10];
149 }
150
151 function loseContext()
152 {
153 // Note: this will cause the context to be lost, but the
154 // webglcontextlost event listener to be queued.
155 extension.loseContext();
156 }
157
158 function testLostContext()
159 {
160 // Purposely make all results true
161 // Functions with special return values.
162 var re1 = gl.isContextLost();
163 var re2 = (gl.getError() == gl.CONTEXT_LOST_WEBGL);
164 var re3 = (gl.getError() == gl.NO_ERROR);
165 var re4 = (gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_UNSUP PORTED);
166 var re5 = (gl.getAttribLocation(program, 'u_modelViewProjMatrix') == -1);
167 var re6 = (gl.getVertexAttribOffset(0, gl.VERTEX_ATTRIB_ARRAY_POINTER) == 0) ;
168
169 // Test the extension itself.
170 var re7 = compareGLError(gl.INVALID_OPERATION, "extension.loseContext()");
171
172 imageData = new ImageData(1, 1);
173 float32array = new Float32Array(1);
174 int32array = new Int32Array(1);
175
176 // Test a set of functions that should not generate any GL error
177 var re8 = compareGLError(gl.NO_ERROR, "gl.activeTexture(gl.TEXTURE0)");
178 var re9 = compareGLError(gl.NO_ERROR, "gl.attachShader(program, shader)");
179 var re10 = compareGLError(gl.NO_ERROR, "gl.bindBuffer(gl.ARRAY_BUFFER, buffe r)");
180 var re11 = compareGLError(gl.NO_ERROR, "gl.bindFramebuffer(gl.FRAMEBUFFER, f ramebuffer)");
181 var re12 = compareGLError(gl.NO_ERROR, "gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer)");
182 var re13 = compareGLError(gl.NO_ERROR, "gl.bindTexture(gl.TEXTURE_2D, textur e)");
183 var re14 = compareGLError(gl.NO_ERROR, "gl.blendColor(1.0, 1.0, 1.0, 1.0)");
184 var re15 = compareGLError(gl.NO_ERROR, "gl.blendEquation(gl.FUNC_ADD)");
185 var re16 = compareGLError(gl.NO_ERROR, "gl.blendEquationSeparate(gl.FUNC_ADD , gl.FUNC_ADD)");
186 var re17 = compareGLError(gl.NO_ERROR, "gl.blendFunc(gl.ONE, gl.ONE)");
187 var re18 = compareGLError(gl.NO_ERROR, "gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE)");
188 var re19 = compareGLError(gl.NO_ERROR, "gl.bufferData(gl.ARRAY_BUFFER, 0, gl .STATIC_DRAW)");
189 var re20 = compareGLError(gl.NO_ERROR, "gl.bufferData(gl.ARRAY_BUFFER, array BufferView, gl.STATIC_DRAW)");
190 var re21 = compareGLError(gl.NO_ERROR, "gl.bufferData(gl.ARRAY_BUFFER, array Buffer, gl.STATIC_DRAW)");
191 var re22 = compareGLError(gl.NO_ERROR, "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBufferView)");
192 var re23 = compareGLError(gl.NO_ERROR, "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBuffer)");
193 var re24 = compareGLError(gl.NO_ERROR, "gl.clear(gl.COLOR_BUFFER_BIT)");
194 var re25 = compareGLError(gl.NO_ERROR, "gl.clearColor(1, 1, 1, 1)");
195 var re26 = compareGLError(gl.NO_ERROR, "gl.clearDepth(1)");
196 var re27 = compareGLError(gl.NO_ERROR, "gl.clearStencil(0)");
197 var re28 = compareGLError(gl.NO_ERROR, "gl.colorMask(1, 1, 1, 1)");
198 var re29 = compareGLError(gl.NO_ERROR, "gl.compileShader(shader)");
199 var re30 = compareGLError(gl.NO_ERROR, "gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, 0, 0)");
200 var re31 = compareGLError(gl.NO_ERROR, "gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0)");
201 var re32 = compareGLError(gl.NO_ERROR, "gl.cullFace(gl.FRONT)");
202 var re33 = compareGLError(gl.NO_ERROR, "gl.deleteBuffer(buffer)");
203 var re34 = compareGLError(gl.NO_ERROR, "gl.deleteFramebuffer(framebuffer)");
204 var re35 = compareGLError(gl.NO_ERROR, "gl.deleteProgram(program)");
205 var re36 = compareGLError(gl.NO_ERROR, "gl.deleteRenderbuffer(renderbuffer)" );
206 var re37 = compareGLError(gl.NO_ERROR, "gl.deleteShader(shader)");
207 var re38 = compareGLError(gl.NO_ERROR, "gl.deleteTexture(texture)");
208 var re39 = compareGLError(gl.NO_ERROR, "gl.depthFunc(gl.NEVER)");
209 var re40 = compareGLError(gl.NO_ERROR, "gl.depthMask(0)");
210 var re41 = compareGLError(gl.NO_ERROR, "gl.depthRange(0, 1)");
211 var re42 = compareGLError(gl.NO_ERROR, "gl.detachShader(program, shader)");
212 var re43 = compareGLError(gl.NO_ERROR, "gl.disable(gl.BLEND)");
213 var re44 = compareGLError(gl.NO_ERROR, "gl.disableVertexAttribArray(0)");
214 var re45 = compareGLError(gl.NO_ERROR, "gl.drawArrays(gl.POINTS, 0, 0)");
215 var re46 = compareGLError(gl.NO_ERROR, "gl.drawElements(gl.POINTS, 0, gl.UNS IGNED_SHORT, 0)");
216 var re47 = compareGLError(gl.NO_ERROR, "gl.enable(gl.BLEND)");
217 var re48 = compareGLError(gl.NO_ERROR, "gl.enableVertexAttribArray(0)");
218 var re49 = compareGLError(gl.NO_ERROR, "gl.finish()");
219 var re50 = compareGLError(gl.NO_ERROR, "gl.flush()");
220 var re51 = compareGLError(gl.NO_ERROR, "gl.framebufferRenderbuffer(gl.FRAMEB UFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer)");
221 var re52 = compareGLError(gl.NO_ERROR, "gl.framebufferTexture2D(gl.FRAMEBUFF ER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0)");
222 var re53 = compareGLError(gl.NO_ERROR, "gl.frontFace(gl.CW)");
223 var re54 = compareGLError(gl.NO_ERROR, "gl.generateMipmap(gl.TEXTURE_2D)");
224 var re55 = compareGLError(gl.NO_ERROR, "gl.hint(gl.GENERATE_MIPMAP_HINT, gl. FASTEST)");
225 var re56 = compareGLError(gl.NO_ERROR, "gl.lineWidth(0)");
226 var re57 = compareGLError(gl.NO_ERROR, "gl.linkProgram(program)");
227 var re58 = compareGLError(gl.NO_ERROR, "gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBG L, 0)");
228 var re59 = compareGLError(gl.NO_ERROR, "gl.polygonOffset(0, 0)");
229 var re60 = compareGLError(gl.NO_ERROR, "gl.readPixels(0, 0, 0, 0, gl.RGBA, g l.UNSIGNED_BYTE, arrayBufferView)");
230 var re61 = compareGLError(gl.NO_ERROR, "gl.renderbufferStorage(gl.RENDERBUFF ER, gl.RGBA4, 0, 0)");
231 var re62 = compareGLError(gl.NO_ERROR, "gl.sampleCoverage(0, 0)");
232 var re63 = compareGLError(gl.NO_ERROR, "gl.scissor(0, 0, 0, 0)");
233 var re64 = compareGLError(gl.NO_ERROR, "gl.shaderSource(shader, '')");
234 var re65 = compareGLError(gl.NO_ERROR, "gl.stencilFunc(gl.NEVER, 0, 0)");
235 var re66 = compareGLError(gl.NO_ERROR, "gl.stencilFuncSeparate(gl.FRONT, gl. NEVER, 0, 0)");
236 var re67 = compareGLError(gl.NO_ERROR, "gl.stencilMask(0)");
237 var re68 = compareGLError(gl.NO_ERROR, "gl.stencilMaskSeparate(gl.FRONT, 0)" );
238 var re69 = compareGLError(gl.NO_ERROR, "gl.stencilOp(gl.KEEP, gl.KEEP, gl.KE EP)");
239 var re70 = compareGLError(gl.NO_ERROR, "gl.stencilOpSeparate(gl.FRONT, gl.KE EP, gl.KEEP, gl.KEEP)");
240 var re71 = compareGLError(gl.NO_ERROR, "gl.texImage2D(gl.TEXTURE_2D, 0, gl.R GBA, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)");
241 var re72 = compareGLError(gl.NO_ERROR, "gl.texImage2D(gl.TEXTURE_2D, 0, gl.R GBA, gl.RGBA, gl.UNSIGNED_BYTE, imageData)");
242 var re73 = compareGLError(gl.NO_ERROR, "gl.texParameterf(gl.TEXTURE_2D, gl.T EXTURE_MIN_FILTER, gl.NEAREST)");
243 var re74 = compareGLError(gl.NO_ERROR, "gl.texParameteri(gl.TEXTURE_2D, gl.T EXTURE_MIN_FILTER, gl.NEAREST)");
244 var re75 = compareGLError(gl.NO_ERROR, "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0 , 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)");
245 var re76 = compareGLError(gl.NO_ERROR, "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0 , 0, gl.RGBA, gl.UNSIGNED_BYTE, imageData)");
246 var re77 = compareGLError(gl.NO_ERROR, "gl.uniform1f(uniformLocation, 0)");
247 var re78 = compareGLError(gl.NO_ERROR, "gl.uniform1fv(uniformLocation, float 32array)");
248 var re79 = compareGLError(gl.NO_ERROR, "gl.uniform1fv(uniformLocation, [0])" );
249 var re80 = compareGLError(gl.NO_ERROR, "gl.uniform1i(uniformLocation, 0)");
250 var re81 = compareGLError(gl.NO_ERROR, "gl.uniform1iv(uniformLocation, int32 array)");
251 var re82 = compareGLError(gl.NO_ERROR, "gl.uniform1iv(uniformLocation, [0])" );
252 var re83 = compareGLError(gl.NO_ERROR, "gl.uniform2f(uniformLocation, 0, 0)" );
253 var re84 = compareGLError(gl.NO_ERROR, "gl.uniform2fv(uniformLocation, float 32array)");
254 var re85 = compareGLError(gl.NO_ERROR, "gl.uniform2fv(uniformLocation, [0, 0 ])");
255 var re86 = compareGLError(gl.NO_ERROR, "gl.uniform2i(uniformLocation, 0, 0)" );
256 var re87 = compareGLError(gl.NO_ERROR, "gl.uniform2iv(uniformLocation, int32 array)");
257 var re88 = compareGLError(gl.NO_ERROR, "gl.uniform2iv(uniformLocation, [0, 0 ])");
258 var re89 = compareGLError(gl.NO_ERROR, "gl.uniform3f(uniformLocation, 0, 0, 0)");
259 var re90 = compareGLError(gl.NO_ERROR, "gl.uniform3fv(uniformLocation, float 32array)");
260 var re91 = compareGLError(gl.NO_ERROR, "gl.uniform3fv(uniformLocation, [0, 0 , 0])");
261 var re92 = compareGLError(gl.NO_ERROR, "gl.uniform3i(uniformLocation, 0, 0, 0)");
262 var re93 = compareGLError(gl.NO_ERROR, "gl.uniform3iv(uniformLocation, int32 array)");
263 var re94 = compareGLError(gl.NO_ERROR, "gl.uniform3iv(uniformLocation, [0, 0 , 0])");
264 var re95 = compareGLError(gl.NO_ERROR, "gl.uniform4f(uniformLocation, 0, 0, 0, 0)");
265 var re96 = compareGLError(gl.NO_ERROR, "gl.uniform4fv(uniformLocation, float 32array)");
266 var re97 = compareGLError(gl.NO_ERROR, "gl.uniform4fv(uniformLocation, [0, 0 , 0, 0])");
267 var re98 = compareGLError(gl.NO_ERROR, "gl.uniform4i(uniformLocation, 0, 0, 0, 0)");
268 var re99 = compareGLError(gl.NO_ERROR, "gl.uniform4iv(uniformLocation, int32 array)");
269 var re100 = compareGLError(gl.NO_ERROR, "gl.uniform4iv(uniformLocation, [0, 0, 0, 0])");
270 var re101 = compareGLError(gl.NO_ERROR, "gl.uniformMatrix2fv(uniformLocation , false, float32array)");
271 var re102 = compareGLError(gl.NO_ERROR, "gl.uniformMatrix2fv(uniformLocation , false, [0, 0, 0, 0])");
272 var re103 = compareGLError(gl.NO_ERROR, "gl.uniformMatrix3fv(uniformLocation , false, float32array)");
273 var re104 = compareGLError(gl.NO_ERROR, "gl.uniformMatrix3fv(uniformLocation , false, [0, 0, 0, 0, 0, 0, 0, 0, 0])");
274 var re105 = compareGLError(gl.NO_ERROR, "gl.uniformMatrix4fv(uniformLocation , false, float32array)");
275 var re106 = compareGLError(gl.NO_ERROR, "gl.uniformMatrix4fv(uniformLocation , false, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])");
276 var re107 = compareGLError(gl.NO_ERROR, "gl.useProgram(program)");
277 var re108 = compareGLError(gl.NO_ERROR, "gl.validateProgram(program)");
278 var re109 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib1f(0, 0)");
279 var re110 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib1fv(0, float32array) ");
280 var re111 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib1fv(0, [0])");
281 var re112 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib2f(0, 0, 0)");
282 var re113 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib2fv(0, float32array) ");
283 var re114 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib2fv(0, [0, 0])");
284 var re115 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib3f(0, 0, 0, 0)");
285 var re116 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib3fv(0, float32array) ");
286 var re117 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib3fv(0, [0, 0, 0])");
287 var re118 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib4f(0, 0, 0, 0, 0)");
288 var re119 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib4fv(0, float32array) ");
289 var re120 = compareGLError(gl.NO_ERROR, "gl.vertexAttrib4fv(0, [0, 0, 0, 0]) ");
290 var re121 = compareGLError(gl.NO_ERROR, "gl.vertexAttribPointer(0, 0, gl.FLO AT, false, 0, 0)");
291 var re122 = compareGLError(gl.NO_ERROR, "gl.viewport(0, 0, 0, 0)");
292
293 // Test a set of functions that should return null
294 var re123 = (gl.createBuffer() == null);
295 var re124 = (gl.createFramebuffer() == null);
296 var re125 = (gl.createProgram() == null);
297 var re126 = (gl.createRenderbuffer() == null);
298 var re127 = (gl.createShader(gl.GL_VERTEX_SHADER) == null);
299 var re128 = (gl.createTexture() == null);
300 var re129 = (gl.getActiveAttrib(program, 0) == null);
301 var re130 = (gl.getActiveUniform(program, 0) == null);
302 var re131 = (gl.getAttachedShaders(program) == null);
303 var re132 = (gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE) == null) ;
304 var re133 = (gl.getContextAttributes() == null);
305 var re134 = (gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_A TTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) == null);
306 var re135 = (gl.getParameter(gl.CURRENT_PROGRAM) == null);
307 var re136 = (gl.getProgramInfoLog(program) == null);
308 var re137 = (gl.getProgramParameter(program, gl.LINK_STATUS) == null);
309 var re138 = (gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WI DTH) == null);
310 var re139 = (gl.getShaderInfoLog(shader) == null);
311 var re140 = (gl.getShaderParameter(shader, gl.SHADER_TYPE) == null);
312 var re141 = (gl.getShaderSource(shader) == null);
313 var re142 = (gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S) == null);
314 var re143 = (gl.getUniform(program, uniformLocation) == null);
315 var re144 = (gl.getUniformLocation(program, 'vPosition') == null);
316 var re145 = (gl.getVertexAttrib(0, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) == null);
317 var re146 = (gl.getSupportedExtensions() == null);
318 var re147 = (eval("gl.getExtension('" + extensionName + "')") == null);
319
320 // "Is" queries should all return false.
321 var re148 = !(gl.isBuffer(buffer));
322 var re149 = !(gl.isEnabled(gl.BLEND));
323 var re150 = !(gl.isFramebuffer(framebuffer));
324 var re151 = !(gl.isProgram(program));
325 var re152 = !(gl.isRenderbuffer(renderbuffer));
326 var re153 = !(gl.isShader(shader));
327 var re154 = !(gl.isTexture(texture));
328
329 var re155 = (gl.getError() == gl.NO_ERROR);
330
331 // test extensions
332 var re156 = compareGLError(gl.NO_ERROR, "OES_vertex_array_object.bindVertexA rrayOES(vertexArrayObject)");
333 var re157 = compareGLError(gl.NO_ERROR, "OES_vertex_array_object.isVertexArr ayOES(vertexArrayObject)");
334 var re158 = compareGLError(gl.NO_ERROR, "OES_vertex_array_object.deleteVerte xArrayOES(vertexArrayObject)");
335 var re159 = (OES_vertex_array_object.createVertexArrayOES() == null);
336
337 lostContextResults = [re1, re2, re3, re4, re5, re6, re7, re8, re9, re10,
338 re11, re12, re13, re14, re15, re16, re17, re18, re19, re20,
339 re21, re22, re23, re24, re25, re26, re27, re28, re29, re30,
340 re31, re32, re33, re34, re35, re36, re37, re38, re39, re40,
341 re41, re42, re43, re44, re45, re46, re47, re48, re49, re50,
342 re51, re52, re53, re54, re55, re56, re57, re58, re59, re60,
343 re61, re62, re63, re64, re65, re66, re67, re68, re69, re70,
344 re71, re72, re73, re74, re75, re76, re77, re78, re79, re80,
345 re81, re82, re83, re84, re85, re86, re87, re88, re89, re90,
346 re91, re92, re93, re94, re95, re96, re97, re98, re99, re100,
347 re101, re102, re103, re104, re105, re106, re107, re108 , re109, re110,
348 re111, re112, re113, re114, re115, re116, re117, re118 , re119, re120,
349 re121, re122, re123, re124, re125, re126, re127, re128 , re129, re130,
350 re131, re132, re133, re134, re135, re136, re137, re138 , re139, re140,
351 re141, re142, re143, re144, re145, re146, re147, re148 , re149, re150,
352 re151, re152, re153, re154, re155, re156, re157, re158 , re159];
353 }
354
355 self.onmessage = function(e) {
356 canvas = new OffscreenCanvas(10, 10);
357 gl = canvas.getContext('webgl');
358
359 // call testValidContext() before checking for the extension, because this i s where we check
360 // for the isContextLost() method, which we want to do regardless of the ext ension's presence.
361 testValidContext();
362
363 extensionName = "WEBGL_lose_context";
364 extension = gl.getExtension(extensionName);
365 // need an extension that exposes new API methods.
366 OES_vertex_array_object = gl.getExtension("OES_vertex_array_object");
367
368 canvas.addEventListener("webglcontextlost", function() {
369 testLostContext();
370 self.postMessage({validRe: validContextResults, lostRe: lostContextResul ts});
371 });
372 // We need to initialize |uniformLocation| before losing context.
373 // Otherwise gl.getUniform() when context is lost will throw.
374 uniformLocation = gl.getUniformLocation(program, "tex");
375 loseContext();
376 };
377
378 </script>
379
380 <script>
381 function makeWorker(script)
382 {
383 var blob = new Blob([script]);
384 return new Worker(URL.createObjectURL(blob));
385 }
386
387 var t = async_test('Test that WebGL context loss events can be handled with Offs creenCanvas in a worker');
388 var worker = makeWorker(document.getElementById("myWorker").textContent);
389 worker.addEventListener('message', t.step_func(function(msg) {
390 var validResults = msg.data.validRe;
391 var lostResults = msg.data.lostRe;
392 assert_equals(validResults.length, 10);
393 assert_equals(lostResults.length, 159);
394 for (var i = 0; i < validResults.length; i++)
395 assert_true(validResults[i], 'Result from testValidContext() should all be true');
396 for (var i = 0; i < lostResults.length; i++)
397 assert_true(lostResults[i], 'Result from testLostContext() should all be true');
398 t.done();
399 }));
400 worker.postMessage('start');
401 </script>
402 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698