blob: 8ce169d935994bff0289b639a026f3bd8d582c45 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script id="myWorker" type="text/worker">
self.onmessage = function(e) {
};
</script>
<script>
function makeWorker(script)
{
var blob = new Blob([script]);
return new Worker(URL.createObjectURL(blob));
}
async_test(function(t) {
var worker = makeWorker(document.getElementById("myWorker").textContent);
var offscreenCanvas = new OffscreenCanvas(10, 10);
worker.postMessage({offscreenCanvas}, [offscreenCanvas]);
offscreenCanvas.convertToBlob().then(t.step_func_done(function() {
assert_false("convertToBlob didn't throw, but should be");
}), t.step_func_done(function(e) {
assert_true(e instanceof DOMException);
assert_equals(e.name, "InvalidStateError");
}));
}, "Test that call convertToBlob on a detached OffscreenCanvas throws exception");
async_test(function(t) {
var offscreenCanvas = new OffscreenCanvas(0, 0);
offscreenCanvas.convertToBlob().then(t.step_func_done(function() {
assert_false("convertToBlob didn't throw, but should be");
}), t.step_func_done(function(e) {
assert_true(e instanceof DOMException);
assert_equals(e.name, "IndexSizeError");
}));
}, "Test that call convertToBlob on an OffscreenCanvas with size 0 throws exception");
async_test(function(t) {
var webp_max_dimension = 16383; // Based on WEBPImageEncoder.cpp?l=52
var offscreenCanvas = new OffscreenCanvas(10, webp_max_dimension + 1);
var ctx = offscreenCanvas.getContext("2d");
offscreenCanvas.convertToBlob({type: "image/webp"}).then(t.step_func_done(function() {
assert_false("convertToBlob didn't throw, but should be");
}), t.step_func_done(function(e) {
assert_true(e instanceof DOMException);
assert_equals(e.name, "EncodingError");
}));
}, "Test that call convertToBlob throws EncodingError exception when encoding fails");
async_test(function(t) {
var offscreenCanvas = new OffscreenCanvas(10, 10);
offscreenCanvas.convertToBlob().then(t.step_func_done(function() {
assert_false("convertToBlob didn't throw, but should be");
}), t.step_func_done(function(e) {
assert_true(e instanceof DOMException);
assert_equals(e.name, "InvalidStateError");
}));
}, "Test that call convertToBlob on an OffscreenCanvas without contexts throws exception");
</script>