| Index: third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-imageData-in-worker.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-imageData-in-worker.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-imageData-in-worker.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8c8ca1bbfbd7ed2fb703dc8a51d03b655bd03757
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-imageData-in-worker.html
|
| @@ -0,0 +1,124 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<body>
|
| +<canvas id='output' width='150' height='150'></canvas>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<script id='myWorker' type='text/worker'>
|
| +function prefilledImageData() {
|
| + var myImageData = new ImageData(10, 10);
|
| + var dataArr = myImageData.data;
|
| + for (var i = 0; i < dataArr.length; i+=4) {
|
| + dataArr[i + 0] = 255;
|
| + dataArr[i + 1] = 100;
|
| + dataArr[i + 2] = 0;
|
| + dataArr[i + 3] = 255;
|
| + }
|
| + return myImageData;
|
| +}
|
| +function postMessageToMain(t, c) {
|
| + self.postMessage({topic: t, content: c});
|
| +}
|
| +self.onmessage = function(e) {
|
| + var aCanvas = new OffscreenCanvas(10, 10);
|
| + var ctx = aCanvas.getContext('2d');
|
| +
|
| + // createImageData(sx, sy)
|
| + try {
|
| + var blankImageData = ctx.createImageData(10, 10);
|
| + postMessageToMain("createImageData(sx, sy)", blankImageData.data[1]);
|
| + } catch (err) {
|
| + postMessageToMain("createImageData(sx, sy)", err);
|
| + }
|
| +
|
| + // createImageData(ImageData)
|
| + try {
|
| + var blankImageData = ctx.createImageData(prefilledImageData());
|
| + postMessageToMain('createImageData(ImageData)', blankImageData.data[1]);
|
| + } catch (err) {
|
| + postMessageToMain('createImageData(ImageData)', err);
|
| + }
|
| +
|
| + // getImageData(sx, sy, sw, sh)
|
| + try {
|
| + ctx.fillStyle = "blue";
|
| + ctx.fillRect(2, 0, 3, 1);
|
| + var imageDataFromCanvas = ctx.getImageData(2, 0, 3, 1);
|
| + postMessageToMain('getImageData(sx, sy, sw, sh)', imageDataFromCanvas.data[2]);
|
| + } catch (err) {
|
| + postMessageToMain('getImageData(sx, sy, sw, sh)', err);
|
| + }
|
| +
|
| + // putImageData(ImageData, dx, dy)
|
| + try {
|
| + ctx.putImageData(prefilledImageData(), 0, 0);
|
| + var imageDataFromCanvas = ctx.getImageData(0, 0, 1, 1);
|
| + postMessageToMain("putImageData(ImageData, dx, dy)", imageDataFromCanvas.data[1]);
|
| + } catch (err) {
|
| + postMessageToMain("putImageData(ImageData, dx, dy)", err);
|
| + }
|
| +
|
| + // putImageData(ImageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)
|
| + ctx.clearRect(0, 0, aCanvas.width, aCanvas.height);
|
| + try {
|
| + ctx.putImageData(prefilledImageData(), 0, 0, 3, 0, 1, 1);
|
| + var imageDataFromCanvas = ctx.getImageData(3, 0, 1, 1);
|
| + postMessageToMain("putImageData(ImageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)", imageDataFromCanvas.data[1]);
|
| + } catch (err) {
|
| + postMessageToMain("putImageData(ImageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) failed: ", err);
|
| + }
|
| +
|
| + postMessageToMain("", "");
|
| +};
|
| +</script>
|
| +<script>
|
| +if (window.testRunner) {
|
| + testRunner.waitUntilDone();
|
| +}
|
| +
|
| +var blob = new Blob([document.getElementById('myWorker').textContent]);
|
| +var worker = new Worker(URL.createObjectURL(blob));
|
| +worker.addEventListener('message', msg => {
|
| + var data = msg.data;
|
| + switch (data.topic) {
|
| + case "createImageData(sx, sy)":
|
| + if (data.content == "0")
|
| + testPassed("createImageData(sx, sy) creates blank image correctly");
|
| + else
|
| + testFailed("createImageData(ImageData) failed: " + data.content);
|
| + break;
|
| + case "createImageData(ImageData)":
|
| + if (data.content == "0")
|
| + testPassed("createImageData(ImageData) creates blank image correctly");
|
| + else
|
| + testFailed("createImageData(ImageData) failed: " + data.content);
|
| + break;
|
| + case "getImageData(sx, sy, sw, sh)":
|
| + if (data.content == "255")
|
| + testPassed("getImageData(sx, sy, sw, sh) is successful.");
|
| + else
|
| + testFailed("getImageData(sx, sy, sw, sh) failed: " + data.content);
|
| + break;
|
| + case "putImageData(ImageData, dx, dy)":
|
| + if (data.content == "100")
|
| + testPassed("putImageData(ImageData, dx, dy) is successful.");
|
| + else
|
| + testFailed("putImageData(ImageData, dx, dy) failed: " + data.content);
|
| + break;
|
| + case "putImageData(ImageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)":
|
| + if (data.content == "100")
|
| + testPassed("putImageData(ImageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) is successful.");
|
| + else
|
| + testFailed("putImageData(ImageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) failed: " + data.content);
|
| + break;
|
| + default:
|
| + if (window.testRunner) {
|
| + testRunner.notifyDone();
|
| + }
|
| + break;
|
| + }
|
| +});
|
| +worker.postMessage("");
|
| +
|
| +</script>
|
| +</body>
|
| +
|
|
|