summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-conf/checkout/conformance/offscreencanvas/context-lost-restored.html
diff options
context:
space:
mode:
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.html88
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>