Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html |
| diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..24ac9322391991d04e2e74cfee322fc5d14649a9 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html |
| @@ -0,0 +1,53 @@ |
| +<!DOCTYPE> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| +<script id="myWorker1" type="text/worker"> |
| +self.onmessage = function(e) { |
| + var offscreenCanvas = e.data; |
| + var offscreen2d = offscreenCanvas.getContext("2d"); |
| + offscreen2d.commit(); |
| + self.postMessage("worker1 done"); |
| +}; |
| +</script> |
| +<script id="myWorker2" type="text/worker"> |
|
Justin Novosad
2016/11/15 19:44:55
No need for two identical worker scripts. You shou
xidachen
2016/11/15 19:49:02
Done.
|
| +self.onmessage = function(e) { |
| + var offscreenCanvas = e.data; |
| + var offscreen2d = offscreenCanvas.getContext("2d"); |
| + offscreen2d.commit(); |
| + self.postMessage("worker2 done"); |
| +}; |
| +</script> |
| +<script> |
| +function makeWorker(script) { |
| + var blob = new Blob([script]); |
| + return new Worker(URL.createObjectURL(blob)); |
| +} |
| + |
| +// Regression test for crbug.com/663916 |
| +async_test(function(t) { |
| + var canvas1 = document.createElement('canvas'); |
| + canvas1.width = canvas1.height = 10; |
| + var offscreenCanvas1 = canvas1.transferControlToOffscreen(); |
| + |
| + var canvas2 = document.createElement('canvas'); |
| + canvas2.width = canvas2.height = 10; |
| + var offscreenCanvas2 = canvas2.transferControlToOffscreen(); |
| + |
| + var worker1 = makeWorker(document.getElementById("myWorker1").textContent); |
| + var worker2 = makeWorker(document.getElementById("myWorker2").textContent); |
| + var returnedWorkerCounter = 0; |
| + worker1.onmessage = function (e) { |
| + returnedWorkerCounter++; |
| + if (returnedWorkerCounter == 2) |
| + t.done(); |
| + }; |
| + worker2.onmessage = function (e) { |
| + returnedWorkerCounter++; |
| + if (returnedWorkerCounter == 2) |
| + t.done(); |
| + }; |
| + worker1.postMessage(offscreenCanvas1, [offscreenCanvas1]); |
| + worker2.postMessage(offscreenCanvas2, [offscreenCanvas2]); |
| +}, "Calling OffscreenCanvas.commit() from two workers should not crash."); |
| + |
| +</script> |