blob: 1a1ad6d8604b2f009dc8b36eebdb62b6f789d7bd [file] [log] [blame]
<!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");
try {
offscreen2d.commit();
self.postMessage("NoError");
} catch (ex) {
self.postMessage(ex.name);
}
};
</script>
<script>
function makeWorker(script) {
var blob = new Blob([script]);
return new Worker(URL.createObjectURL(blob));
}
test(function() {
var offscreenCanvas = new OffscreenCanvas(50, 50);
var offscreen2d = offscreenCanvas.getContext("2d");
assert_throws("InvalidStateError", function () {
offscreen2d.commit();
});
}, "Calling OffscreenCanvas.commit() on main without transferControlToOffscreen throws exception.");
test(function() {
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);
assert_throws("InvalidStateError", function() {
gl.commit();
});
}, "Calling WebGL's commit() on main without transferControlToOffscreen throws exception.");
test(function() {
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);
assert_throws("InvalidStateError", function() {
gl.commit();
});
}, "Calling WebGL's commit() on main without a OffscreenCanvas throws 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 throws exception.");
</script>