chromium/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-transferToImageBitmap.html

<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<script>
var aCanvas = new OffscreenCanvas(60, 40);

// TransferToImageBitmap on an OffscreenCanvas with no context
shouldThrow("aCanvas.transferToImageBitmap()");
ctx = aCanvas.getContext('2d');

// Verify ImageBitmap is correctly sized
var image = aCanvas.transferToImageBitmap();
shouldBe("image.width", "60");
shouldBe("image.height", "40");

// Verify state is preserved through transferToImageBitmap()
ctx.lineWidth = 5;
aCanvas.transferToImageBitmap();
shouldBe("ctx.lineWidth", "5");

// Verify backing is reset through transferToImageBitmap()
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, aCanvas.width, aCanvas.height);
var firstImage = aCanvas.transferToImageBitmap();
var secondImage = aCanvas.transferToImageBitmap();
var testCanvas = document.createElement('canvas');
var testCtx = testCanvas.getContext('2d', {willReadFrequently: true});
testCtx.drawImage(firstImage, 0, 0);
var imgData = testCtx.getImageData(0, 0, 1, 1).data;
shouldBe("imgData[0]", "255");
shouldBe("imgData[1]", "0");
shouldBe("imgData[2]", "0");
shouldBe("imgData[3]", "255");
testCtx.clearRect(0, 0, testCanvas.width, testCanvas.height);
testCtx.drawImage(secondImage, 0, 0);
imgData = testCtx.getImageData(0, 0, 1, 1).data;
shouldBe("imgData[0]", "0");
shouldBe("imgData[1]", "0");
shouldBe("imgData[2]", "0");
shouldBe("imgData[3]", "0");

</script>