diff options
Diffstat (limited to 'dom/worklet/tests/test_dynamic_import.html')
-rw-r--r-- | dom/worklet/tests/test_dynamic_import.html | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/dom/worklet/tests/test_dynamic_import.html b/dom/worklet/tests/test_dynamic_import.html new file mode 100644 index 0000000000..e0326b976c --- /dev/null +++ b/dom/worklet/tests/test_dynamic_import.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test import() should throw a TypeError for Worklets</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"> +const WORKLET_SCRIPT = "dynamic_import.js"; + +function configureTest() { + const ConsoleAPIStorage = SpecialPowers.Cc[ + "@mozilla.org/consoleAPI-storage;1" + ].getService(SpecialPowers.Ci.nsIConsoleAPIStorage); + + // We use console API to check if a TypeError has been thrown, as worklets + // have limitations to post the result back to the main document: + // Worklets have a different global, and they don't have postMessage() APIs, + // and static import SimpleTest.js in worklets also don't work. + function consoleListener() { + this.observe = this.observe.bind(this); + ConsoleAPIStorage.addLogEventListener(this.observe, SpecialPowers.wrap(document).nodePrincipal); + } + + consoleListener.prototype = { + observe(aSubject) { + var obj = aSubject.wrappedJSObject; + info("Got console message:" + obj.arguments[0]); + is(TypeError.name + ": Success", obj.arguments[0], "import() should throw"); + + ConsoleAPIStorage.removeLogEventListener(this.observe); + SimpleTest.finish(); + } + } + + var cl = new consoleListener(); + + return SpecialPowers.pushPrefEnv( + {"set": [["dom.audioworklet.enabled", true], + ["dom.worklet.enabled", true]]}); +} + +// This function is called into an iframe. +function runTestInIframe() { + var audioContext = new AudioContext(); + audioContext.audioWorklet.addModule(WORKLET_SCRIPT); +} + +</script> +</body> +</html> |