blob: 0410d81386c472ff7d5f25606073d24955a5c6c4 [file]
<html>
<head>
<script type="text/javascript">
var setupFinished = false;
function onLoad() {
var canvas = document.createElement('canvas');
canvas.width = 16;
canvas.height = 16;
document.body.appendChild(canvas);
var gl = canvas.getContext('webgl', { preserveDrawingBuffer: false });
if (!gl) {
window.domAutomationController.send("FAILED");
return;
}
// 1. Initial draw & clear (contents_changed_ = true)
gl.clearColor(1.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
// 2. Wait for frame presentation so buffer_clear_needed_ = true and contents_changed_ = false.
requestAnimationFrame(() => {
requestAnimationFrame(() => {
// 3. Perform readback. ClearIfComposited clears the buffer and sets buffer_clear_needed_ = false.
canvas.toDataURL();
var resultSent = false;
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'hidden' && !resultSent) {
resultSent = true;
// 4. Perform gl.clear() in background when buffer_clear_needed_ is false.
// EnsureBackColorBuffer() must recreate the discarded back buffer.
try {
gl.clearColor(0.0, 1.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
if (gl.getError() === gl.NO_ERROR) {
window.domAutomationController.send("SUCCESS");
} else {
window.domAutomationController.send("FAILED");
}
} catch (e) {
window.domAutomationController.send("FAILED");
}
}
});
window.setupFinished = true;
});
});
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>