blob: c085111e6f95096ba723cbec806d3db7b83f0749 [file] [edit]
<!DOCTYPE html><!-- webkit-test-runner [ UseGPUProcessForWebGLEnabled=true runSingly=true ] -->
<html>
<head>
<meta charset="utf-8">
<title>WebKit test for creating WebGL context when it can fail</title>
<link rel="stylesheet" href="resources/webgl_test_files/resources/js-test-style.css"/>
<script src="resources/webgl_test_files/js/js-test-pre.js"></script>
<script src="resources/webgl_test_files/js/webgl-test-utils.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<canvas id="canvasWorks"></canvas>
<canvas id="canvasFails"></canvas>
<script>
"use strict";
description("This test tests that WebGL platform context creation can fail and it doesn't crash.");
// At the time of writing, the GPU process would crash if ANGLE was not present and
// GraphicsContextGL creation would fail.
debug("");
var glWorks;
var glFails;
function runTest() {
glWorks = canvasWorks.getContext("webgl");
shouldBeNonNull(glWorks);
shouldBeTrue('"failContextCreationForTesting" in glWorks.getContextAttributes()'); // Expects support for "DOM Testing APIs Enabled internal setting"
glFails = canvasFails.getContext("webgl", { failContextCreationForTesting: "FailPlatformContextCreation" });
if (!glFails) {
testPassed("Context was not returned");
shouldBe("glWorks.NO_ERROR", "glWorks.getError()" );
finishTest();
} else {
canvasWorks.addEventListener('webglcontextcreationerror', () => {
testFailed("Received context creation error for glWorks");
}, false);
canvasWorks.addEventListener('webglcontextlost', () => {
testFailed("Received context lost error for glWorks");
}, false);
canvasFails.addEventListener('webglcontextcreationerror', () => {
testPassed("Received context creation error for glFails");
shouldBe("glWorks.NO_ERROR", "glWorks.getError()" );
finishTest();
clearTimeout(timeout);
}, false);
canvasFails.addEventListener('webglcontextlost', () => {
testPassed("Received context lost error for glFails");
shouldBe("glWorks.NO_ERROR", "glWorks.getError()" );
finishTest();
clearTimeout(timeout);
}, false);
var timeout = setTimeout(() => {
testFailed("Timeout while waiting for canvas creation error.");
finishTest();
}, 2000);
}
}
window.onload = runTest;
var successfullyParsed = true;
</script>
</body>
</html>