diff options
Diffstat (limited to '')
-rw-r--r-- | dom/worklet/tests/test_exception.html | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/dom/worklet/tests/test_exception.html b/dom/worklet/tests/test_exception.html new file mode 100644 index 0000000000..598dc859f3 --- /dev/null +++ b/dom/worklet/tests/test_exception.html @@ -0,0 +1,73 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test for Exception in Worklet script</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + <script type="application/javascript" src="common.js"></script> +</head> +<body> + +<script type="application/javascript"> + +function configureTest() { + return SpecialPowers.pushPrefEnv( + {"set": [["dom.audioworklet.enabled", true], + ["dom.worklet.enabled", true]]}); +} + +// This function is called into an iframe. +function runTestInIframe() { + let error; + + // This loading should fail + var audioContext = new AudioContext(); + audioContext.audioWorklet.addModule("404.js") + .then(() => { + ok(false, "We should not be called!"); + }, () => { + ok(true, "The script thrown but we are still here."); + }) + + // This should throw from JS + .then(() => { + return audioContext.audioWorklet.addModule("worklet_exception.js") + }) + .then(() => { + ok(true, "The script threw but we are still here."); + }, () => { + ok(false, "We should not be called!"); + }) + + // invalid_specifier.mjs will throw a TypeError. + .then(() => { + return audioContext.audioWorklet.addModule("invalid_specifier.mjs") + }) + .then(() => { + ok(false, "We should not be called!"); + }, (e) => { + ok(true, "The script thrown but we are still here."); + ok(e instanceof TypeError, "The error should be a TypeError."); + error = e; + }) + + // import "invalid_specifier.mjs" again, this will reuse the response from the + // previous addModule("invalid_specifier.mjs") call. + .then(() => { + return audioContext.audioWorklet.addModule("invalid_specifier.mjs") + }) + .then(() => { + ok(false, "We should not be called!"); + }, (e) => { + ok(true, "The script thrown but we are still here."); + ok (e === error, "The TypeError object should be reused."); + }) + + .then(() => { + SimpleTest.finish(); + }); +} + +</script> +</body> +</html> |