| <!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 = new OffscreenCanvas(50, 50); |
| var offscreen2d = offscreenCanvas.getContext("2d"); |
| offscreen2d.commit().then(function() { |
| self.postMessage("NoError"); |
| }, ex => { |
| self.postMessage(ex.name); |
| }); |
| }; |
| </script> |
| <script> |
| function makeWorker(script) { |
| var blob = new Blob([script]); |
| return new Worker(URL.createObjectURL(blob)); |
| } |
| |
| promise_test(t => { |
| var offscreenCanvas = new OffscreenCanvas(50, 50); |
| var offscreen2d = offscreenCanvas.getContext("2d"); |
| return promise_rejects(t, new DOMException("", "InvalidStateError"), offscreen2d.commit()); |
| }, "Calling OffscreenCanvas.commit() on main without transferControlToOffscreen rejects promise with an exception."); |
| |
| promise_test(t => { |
| var offscreenCanvas = new OffscreenCanvas(50, 50); |
| var gl = offscreenCanvas.getContext("webgl"); |
| gl.clearColor(1.0, 0.0, 0.0, 1.0); |
| gl.clear(gl.COLOR_BUFFER_BIT); |
| return promise_rejects(t, new DOMException("", "InvalidStateError"), gl.commit()); |
| }, "Calling WebGL's commit() on main without transferControlToOffscreen rejects promise with an exception."); |
| |
| promise_test(t => { |
| var canvas = document.createElement('canvas'); |
| canvas.width = 50; |
| canvas.height = 50; |
| var gl = canvas.getContext("webgl"); |
| gl.clearColor(1.0, 0.0, 0.0, 1.0); |
| gl.clear(gl.COLOR_BUFFER_BIT); |
| return promise_rejects(t, new DOMException("", "InvalidStateError"), gl.commit()); |
| }, "Calling WebGL's commit() on main without an OffscreenCanvas rejects promise with an exception."); |
| |
| async_test(function() { |
| var worker = makeWorker(document.getElementById("myWorker").textContent); |
| worker.onmessage = this.step_func(function (e) { |
| assert_equals(e.data, "InvalidStateError", "Expected exception on worker but receives " + e.data); |
| this.done(); |
| }); |
| worker.postMessage(""); |
| }, "Calling OffscreenCanvas.commit() on worker without transferControlToOffscreen rejects promise with an exception."); |
| |
| |
| |
| </script> |