Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<html class="reftest-wait">
<link rel="match" href="unclosed-nested-layers-expected.html">
<title>Canvas test: unclosed-nested-layers</title>
<h1>unclosed-nested-layers</h1>
<p class="desc">Check that unclosed nested layers aren't rendered.</p>
<canvas id="canvas" width="1" height="1">
<p class="fallback">FAIL (fallback content)</p>
</canvas>
<script id='myWorker' type='text/worker'>
self.onmessage = msg => {
const offscreen = msg.data.canvas;
const ctx = offscreen.getContext('2d');
offscreen.width = offscreen.height = 200;
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
ctx.fillRect(60, 60, 75, 50);
ctx.beginLayer();
ctx.fillStyle = 'rgba(225, 0, 0, 1)';
ctx.fillRect(50, 50, 75, 50);
ctx.beginLayer();
ctx.fillStyle = 'rgba(0, 255, 0, 1)';
ctx.fillRect(70, 70, 75, 50);
ctx.endLayer();
// Missing ctx.endLayer() here.
self.postMessage('setup ready');
}
</script>
<script>
const blob = new Blob([document.getElementById('myWorker').textContent]);
const worker = new Worker(URL.createObjectURL(blob));
var placeholder = document.getElementById('canvas');
var offscreen = placeholder.transferControlToOffscreen();
worker.addEventListener('message', msg => {
if(msg.data == 'setup ready') {
function draw () {
// Wait until frame propagates.
if(placeholder.width != 1) {
document.documentElement.classList.remove("reftest-wait");
} else {
requestAnimationFrame(draw);
}
}
requestAnimationFrame(draw);
}
});
worker.postMessage({
canvas: offscreen
}, [offscreen]);
</script>