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..a16f074088179f9a121499d1ac6aa62f3ca5960b |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html |
| @@ -0,0 +1,45 @@ |
| +<!DOCTYPE> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| +<script id="myWorker" type="text/worker"> |
| +self.onmessage = function(e) { |
| + var offscreenCanvas = e.data; |
| + var offscreen2d = offscreenCanvas.getContext("2d"); |
| + offscreen2d.commit(); |
| + self.postMessage("worker 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("myWorker").textContent); |
|
Justin Novosad
2016/11/15 20:24:58
Nit: no need for an argument for makeWorker becaus
|
| + var worker2 = makeWorker(document.getElementById("myWorker").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> |