mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 05:11:16 +00:00
15a5560a3d
Differential Revision: https://phabricator.services.mozilla.com/D183645
67 lines
1.8 KiB
HTML
67 lines
1.8 KiB
HTML
<!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">
|
|
// 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>
|