diff options
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance/offscreencanvas/context-lost-restored.html')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance/offscreencanvas/context-lost-restored.html | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/offscreencanvas/context-lost-restored.html b/dom/canvas/test/webgl-conf/checkout/conformance/offscreencanvas/context-lost-restored.html new file mode 100644 index 0000000000..28e1878179 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/offscreencanvas/context-lost-restored.html @@ -0,0 +1,88 @@ +<!-- +Copyright (c) 2019 The Khronos Group Inc. +Use of this source code is governed by an MIT-style license that can be +found in the LICENSE.txt file. +--> +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<link rel="stylesheet" href="../../resources/js-test-style.css"/> +<script src="../../js/js-test-pre.js"></script> +<script src="../../js/webgl-test-utils.js"></script> +<script src="../../js/tests/canvas-tests-utils.js"></script> +<script> + +function init() +{ + description("Tests behavior under a restored context for OffscreenCanvas."); + + if (!window.OffscreenCanvas) { + testPassed("No OffscreenCanvas support"); + finishTest(); + return; + } + + if (!setupTest()) { + testFailed("Cannot initialize test"); + finishTest(); + return; + } + + canvas.addEventListener("webglcontextlost", function(e) { + if (!testLostContext(e)) { + testFailed("Some test failed"); + finishTest(); + return; + } + // restore the context after this event has exited. + setTimeout(function() { + // we didn't call prevent default so we should not be able to restore the context + if (!compareGLError(gl.INVALID_OPERATION, "WEBGL_lose_context.restoreContext()")) { + testFailed("Some test failed"); + finishTest(); + return; + } + testLosingAndRestoringContext().then(function() { + testPassed("Test passed"); + finishTest(); + return; + }, function() { + testFailed("Some test failed"); + finishTest(); + return; + }); + }, 0); + }); + canvas.addEventListener("webglcontextrestored", function() { + testFailed("Some test failed"); + finishTest(); + return; + }); + allowRestore = false; + contextLostEventFired = false; + contextRestoredEventFired = false; + + if (!testOriginalContext()) { + testFailed("Some test failed"); + finishTest(); + return; + } + WEBGL_lose_context.loseContext(); + // The context should be lost immediately. + shouldBeTrue("gl.isContextLost()"); + shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL"); + shouldBe("gl.getError()", "gl.NO_ERROR"); + // gl methods should be no-ops + shouldBeTrue(compareGLError(gl.NO_ERROR, "gl.blendFunc(gl.TEXTURE_2D, gl.TEXTURE_CUBE_MAP)")); + // but the event should not have been fired. + shouldBeFalse("contextLostEventFired"); +} + +</script> +</head> +<body onload="init()"> +<div id="description"></div> +<div id="console"></div> +</body> +</html> |