<html>
<head>
<script type="text/javascript">
var kSize = 16;
var contextLost = false;
function onLoad() {
var canvas = createNewCanvas();
var gl = canvas.getContext('webgl');
if (!gl || !clearAndValidate(gl, 1, 0, 0))
window.domAutomationController.send("FAILED");
canvas.addEventListener('webglcontextlost', (event) => {
event.preventDefault();
contextLost = true;
});
canvas.addEventListener('webglcontextrestored', () => {
// Using the original WebGL context after restoring should succeed.
if (clearAndValidate(gl, 0, 1, 0))
window.domAutomationController.send("SUCCESS");
else
window.domAutomationController.send("FAILED");
});
window.domAutomationController.send("LOADED");
}
function createNewCanvas() {
var canvas = document.createElement('canvas');
canvas.width = kSize;
canvas.height = kSize;
document.body.appendChild(canvas);
return canvas;
}
function clearAndValidate(gl, r, g, b) {
gl.clearColor(r, g, b, 1);
gl.clear(gl.COLOR_BUFFER_BIT);
var pixels = new Uint8Array(kSize * kSize * 4);
gl.readPixels(0, 0, kSize, kSize, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
return pixels[0] == r * 255 && pixels[1] == g * 255 &&
pixels[2] == b * 255 && pixels[3] == 255;
}
function testNewWebGLContext() {
// Reset the success/failure code that onLoad() may have set.
window.domAutomationController.reset();
var canvas = createNewCanvas();
var gl = canvas.getContext('webgl');
if (gl != null && clearAndValidate(gl, 0, 0, 1))
window.domAutomationController.send("SUCCESS");
else
window.domAutomationController.send("FAILED");
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>