| Index: conformance/context-lost.html
|
| ===================================================================
|
| --- conformance/context-lost.html (revision 106149)
|
| +++ conformance/context-lost.html (working copy)
|
| @@ -1,320 +0,0 @@
|
| -<!DOCTYPE html>
|
| -<html>
|
| -<head>
|
| -<meta charset="utf-8">
|
| -<link rel="stylesheet" href="../resources/js-test-style.css"/>
|
| -<script src="../resources/js-test-pre.js"></script>
|
| -<script src="resources/webgl-test.js"></script>
|
| -<script src="resources/webgl-test-utils.js"></script>
|
| -<script>
|
| -var wtu;
|
| -var canvas;
|
| -var gl;
|
| -var shouldGenerateGLError;
|
| -var extension_name = "WEBKIT_lose_context";
|
| -var extension;
|
| -
|
| -var buffer;
|
| -var framebuffer;
|
| -var program;
|
| -var renderbuffer;
|
| -var shader;
|
| -var texture;
|
| -var uniformLocation;
|
| -var arrayBuffer;
|
| -var arrayBufferView
|
| -var image;
|
| -var video;
|
| -var canvas2d;
|
| -var ctx2d;
|
| -var imageData;
|
| -var float32array;
|
| -var int32array;
|
| -
|
| -function init()
|
| -{
|
| - wtu = WebGLTestUtils;
|
| - canvas = document.getElementById("canvas");
|
| - gl = wtu.create3DContext(canvas);
|
| - shouldGenerateGLError = wtu.shouldGenerateGLError;
|
| -
|
| - description("Tests behavior under a lost context");
|
| -
|
| - if (window.initNonKhronosFramework) {
|
| - window.initNonKhronosFramework(true);
|
| - }
|
| -
|
| - // call testValidContext() before checking for the extension, because this is where we check
|
| - // for the isContextLost() method, which we want to do regardless of the extension's presence.
|
| - testValidContext();
|
| -
|
| - extension = gl.getExtension(extension_name);
|
| - if (!extension) {
|
| - debug(extension_name + " extension not found.");
|
| - finish();
|
| - return;
|
| - }
|
| -
|
| - canvas.addEventListener("webglcontextlost", testLostContext, false);
|
| -
|
| - loseContext();
|
| -}
|
| -
|
| -function loseContext()
|
| -{
|
| - debug("");
|
| - debug("Lose context");
|
| - shouldGenerateGLError(gl, gl.NO_ERROR, "extension.loseContext()");
|
| - debug("");
|
| -}
|
| -
|
| -function testValidContext()
|
| -{
|
| - debug("Test valid context");
|
| -
|
| - shouldBeFalse("gl.isContextLost()");
|
| -
|
| - arrayBuffer = new ArrayBuffer(4);
|
| - arrayBufferView = new Int8Array(arrayBuffer);
|
| -
|
| - // Generate resources for testing.
|
| - buffer = gl.createBuffer();
|
| - gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
| - framebuffer = gl.createFramebuffer();
|
| - gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
|
| - program = wtu.setupSimpleTextureProgram(gl);
|
| - renderbuffer = gl.createRenderbuffer();
|
| - gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
|
| - shader = gl.createShader(gl.VERTEX_SHADER);
|
| - texture = gl.createTexture();
|
| - gl.bindTexture(gl.TEXTURE_2D, texture);
|
| - shouldBe("gl.getError()", "gl.NO_ERROR");
|
| -
|
| - // Test is queries that will later be false
|
| - shouldGenerateGLError(gl, gl.NO_ERROR, "gl.enable(gl.BLEND)");
|
| - shouldBeTrue("gl.isBuffer(buffer)");
|
| - shouldBeTrue("gl.isEnabled(gl.BLEND)");
|
| - shouldBeTrue("gl.isFramebuffer(framebuffer)");
|
| - shouldBeTrue("gl.isProgram(program)");
|
| - shouldBeTrue("gl.isRenderbuffer(renderbuffer)");
|
| - shouldBeTrue("gl.isShader(shader)");
|
| - shouldBeTrue("gl.isTexture(texture)");
|
| -}
|
| -
|
| -function testLostContext()
|
| -{
|
| - debug("Test lost context");
|
| -
|
| - // Functions with special return values.
|
| - shouldBeTrue("gl.isContextLost()");
|
| - shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
|
| - shouldBe("gl.getError()", "gl.NO_ERROR");
|
| - shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPPORTED");
|
| - shouldBe("gl.getAttribLocation(program, 'u_modelViewProjMatrix')", "-1");
|
| - shouldBe("gl.getVertexAttribOffset(0, gl.VERTEX_ATTRIB_ARRAY_POINTER)", "0");
|
| -
|
| - // Test the extension itself.
|
| - shouldGenerateGLError(gl, gl.INVALID_OPERATION, "extension.loseContext()");
|
| -
|
| - image = document.createElement("image");
|
| - video = document.createElement("video");
|
| - canvas2d = document.createElement("canvas");
|
| - ctx2d = canvas2d.getContext("2d");
|
| - imageData = ctx2d.createImageData(1, 1);
|
| - float32array = new Float32Array(1);
|
| - int32array = new Int32Array(1);
|
| -
|
| - // Functions returning void should return immediately.
|
| - // This is untestable, but we can at least be sure they cause no errors
|
| - // and the codepaths are exercised.
|
| - var voidTests = [
|
| - "gl.activeTexture(gl.TEXTURE0)",
|
| - "gl.attachShader(program, shader)",
|
| - "gl.bindBuffer(gl.ARRAY_BUFFER, buffer)",
|
| - "gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer)",
|
| - "gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer)",
|
| - "gl.bindTexture(gl.TEXTURE_2D, texture)",
|
| - "gl.blendColor(1.0, 1.0, 1.0, 1.0)",
|
| - "gl.blendEquation(gl.FUNC_ADD)",
|
| - "gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD)",
|
| - "gl.blendFunc(gl.ONE, gl.ONE)",
|
| - "gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE)",
|
| - "gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW)",
|
| - "gl.bufferData(gl.ARRAY_BUFFER, arrayBufferView, gl.STATIC_DRAW)",
|
| - "gl.bufferData(gl.ARRAY_BUFFER, arrayBuffer, gl.STATIC_DRAW)",
|
| - "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBufferView)",
|
| - "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBuffer)",
|
| - "gl.clear(gl.COLOR_BUFFER_BIT)",
|
| - "gl.clearColor(1, 1, 1, 1)",
|
| - "gl.clearDepth(1)",
|
| - "gl.clearStencil(0)",
|
| - "gl.colorMask(1, 1, 1, 1)",
|
| - "gl.compileShader(shader)",
|
| - "gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, 0, 0)",
|
| - "gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0)",
|
| - "gl.cullFace(gl.FRONT)",
|
| - "gl.deleteBuffer(buffer)",
|
| - "gl.deleteFramebuffer(framebuffer)",
|
| - "gl.deleteProgram(program)",
|
| - "gl.deleteRenderbuffer(renderbuffer)",
|
| - "gl.deleteShader(shader)",
|
| - "gl.deleteTexture(texture)",
|
| - "gl.depthFunc(gl.NEVER)",
|
| - "gl.depthMask(0)",
|
| - "gl.depthRange(0, 1)",
|
| - "gl.detachShader(program, shader)",
|
| - "gl.disable(gl.BLEND)",
|
| - "gl.disableVertexAttribArray(0)",
|
| - "gl.drawArrays(gl.POINTS, 0, 0)",
|
| - "gl.drawElements(gl.POINTS, 0, gl.UNSIGNED_SHORT, 0)",
|
| - "gl.enable(gl.BLEND)",
|
| - "gl.enableVertexAttribArray(0)",
|
| - "gl.finish()",
|
| - "gl.flush()",
|
| - "gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer)",
|
| - "gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0)",
|
| - "gl.frontFace(gl.CW)",
|
| - "gl.generateMipmap(gl.TEXTURE_2D)",
|
| - "gl.hint(gl.GENERATE_MIPMAP_HINT, gl.FASTEST)",
|
| - "gl.lineWidth(0)",
|
| - "gl.linkProgram(program)",
|
| - "gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0)",
|
| - "gl.polygonOffset(0, 0)",
|
| - "gl.readPixels(0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)",
|
| - "gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 0, 0)",
|
| - "gl.sampleCoverage(0, 0)",
|
| - "gl.scissor(0, 0, 0, 0)",
|
| - "gl.shaderSource(shader, '')",
|
| - "gl.stencilFunc(gl.NEVER, 0, 0)",
|
| - "gl.stencilFuncSeparate(gl.FRONT, gl.NEVER, 0, 0)",
|
| - "gl.stencilMask(0)",
|
| - "gl.stencilMaskSeparate(gl.FRONT, 0)",
|
| - "gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)",
|
| - "gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP)",
|
| - "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)",
|
| - "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, imageData)",
|
| - "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image)",
|
| - "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas)",
|
| - "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video)",
|
| - "gl.texParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)",
|
| - "gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)",
|
| - "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)",
|
| - "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, imageData)",
|
| - "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, image)",
|
| - "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, canvas)",
|
| - "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, video)",
|
| - "gl.uniform1f(uniformLocation, 0)",
|
| - "gl.uniform1fv(uniformLocation, float32array)",
|
| - "gl.uniform1fv(uniformLocation, [0])",
|
| - "gl.uniform1i(uniformLocation, 0)",
|
| - "gl.uniform1iv(uniformLocation, int32array)",
|
| - "gl.uniform1iv(uniformLocation, [0])",
|
| - "gl.uniform2f(uniformLocation, 0, 0)",
|
| - "gl.uniform2fv(uniformLocation, float32array)",
|
| - "gl.uniform2fv(uniformLocation, [0, 0])",
|
| - "gl.uniform2i(uniformLocation, 0, 0)",
|
| - "gl.uniform2iv(uniformLocation, int32array)",
|
| - "gl.uniform2iv(uniformLocation, [0, 0])",
|
| - "gl.uniform3f(uniformLocation, 0, 0, 0)",
|
| - "gl.uniform3fv(uniformLocation, float32array)",
|
| - "gl.uniform3fv(uniformLocation, [0, 0, 0])",
|
| - "gl.uniform3i(uniformLocation, 0, 0, 0)",
|
| - "gl.uniform3iv(uniformLocation, int32array)",
|
| - "gl.uniform3iv(uniformLocation, [0, 0, 0])",
|
| - "gl.uniform4f(uniformLocation, 0, 0, 0, 0)",
|
| - "gl.uniform4fv(uniformLocation, float32array)",
|
| - "gl.uniform4fv(uniformLocation, [0, 0, 0, 0])",
|
| - "gl.uniform4i(uniformLocation, 0, 0, 0, 0)",
|
| - "gl.uniform4iv(uniformLocation, int32array)",
|
| - "gl.uniform4iv(uniformLocation, [0, 0, 0, 0])",
|
| - "gl.uniformMatrix2fv(uniformLocation, false, float32array)",
|
| - "gl.uniformMatrix2fv(uniformLocation, false, [0, 0, 0, 0])",
|
| - "gl.uniformMatrix3fv(uniformLocation, false, float32array)",
|
| - "gl.uniformMatrix3fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0])",
|
| - "gl.uniformMatrix4fv(uniformLocation, false, float32array)",
|
| - "gl.uniformMatrix4fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])",
|
| - "gl.useProgram(program)",
|
| - "gl.validateProgram(program)",
|
| - "gl.vertexAttrib1f(0, 0)",
|
| - "gl.vertexAttrib1fv(0, float32array)",
|
| - "gl.vertexAttrib1fv(0, [0])",
|
| - "gl.vertexAttrib2f(0, 0, 0)",
|
| - "gl.vertexAttrib2fv(0, float32array)",
|
| - "gl.vertexAttrib2fv(0, [0, 0])",
|
| - "gl.vertexAttrib3f(0, 0, 0, 0)",
|
| - "gl.vertexAttrib3fv(0, float32array)",
|
| - "gl.vertexAttrib3fv(0, [0, 0, 0])",
|
| - "gl.vertexAttrib4f(0, 0, 0, 0, 0)",
|
| - "gl.vertexAttrib4fv(0, float32array)",
|
| - "gl.vertexAttrib4fv(0, [0, 0, 0, 0])",
|
| - "gl.vertexAttribPointer(0, 0, gl.FLOAT, false, 0, 0)",
|
| - "gl.viewport(0, 0, 0, 0)",
|
| - ];
|
| - for (var i = 0; i < voidTests.length; ++i) {
|
| - shouldGenerateGLError(gl, gl.NO_ERROR, voidTests[i]);
|
| - }
|
| -
|
| - // Functions return nullable values should all return null.
|
| - var nullTests = [
|
| - "gl.createBuffer()",
|
| - "gl.createFramebuffer()",
|
| - "gl.createProgram()",
|
| - "gl.createRenderbuffer()",
|
| - "gl.createShader(gl.GL_VERTEX_SHADER)",
|
| - "gl.createTexture()",
|
| - "gl.getActiveAttrib(program, 0)",
|
| - "gl.getActiveUniform(program, 0)",
|
| - "gl.getAttachedShaders(program)",
|
| - "gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE)",
|
| - "gl.getContextAttributes()",
|
| - "gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)",
|
| - "gl.getParameter(gl.CURRENT_PROGRAM)",
|
| - "gl.getProgramInfoLog(program)",
|
| - "gl.getProgramParameter(program, gl.LINK_STATUS)",
|
| - "gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)",
|
| - "gl.getShaderInfoLog(shader)",
|
| - "gl.getShaderParameter(shader, gl.SHADER_TYPE)",
|
| - "gl.getShaderSource(shader)",
|
| - "gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S)",
|
| - "gl.getUniform(program, uniformLocation)",
|
| - "gl.getUniformLocation(program, 'vPosition')",
|
| - "gl.getVertexAttrib(0, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)",
|
| - "gl.getSupportedExtensions()",
|
| - "gl.getExtension('" + extension_name + "')",
|
| - ];
|
| - for (var i = 0; i < nullTests.length; ++i) {
|
| - shouldBeNull(nullTests[i]);
|
| - }
|
| -
|
| - // "Is" queries should all return false.
|
| - shouldBeFalse("gl.isBuffer(buffer)");
|
| - shouldBeFalse("gl.isEnabled(gl.BLEND)");
|
| - shouldBeFalse("gl.isFramebuffer(framebuffer)");
|
| - shouldBeFalse("gl.isProgram(program)");
|
| - shouldBeFalse("gl.isRenderbuffer(renderbuffer)");
|
| - shouldBeFalse("gl.isShader(shader)");
|
| - shouldBeFalse("gl.isTexture(texture)");
|
| -
|
| - shouldBe("gl.getError()", "gl.NO_ERROR");
|
| -
|
| - finish();
|
| -}
|
| -
|
| -function finish() {
|
| - successfullyParsed = true;
|
| - var epilogue = document.createElement("script");
|
| - epilogue.onload = function() {
|
| - if (window.nonKhronosFrameworkNotifyDone)
|
| - window.nonKhronosFrameworkNotifyDone();
|
| - };
|
| - epilogue.src = "../resources/js-test-post.js";
|
| - document.body.appendChild(epilogue);
|
| -}
|
| -</script>
|
| -</head>
|
| -<body onload="init()">
|
| -<div id="description"></div>
|
| -<div id="console"></div>
|
| -<canvas id="canvas">
|
| -</body>
|
| -</html>
|
|
|