diff options
Diffstat (limited to 'testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html')
-rw-r--r-- | testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html b/testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html new file mode 100644 index 0000000000..10e5aa6526 --- /dev/null +++ b/testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html @@ -0,0 +1,56 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test for SpecialPowers.importInMainProcess</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> + +<div id="content" class="testbody"> + <script type="text/javascript"> + SimpleTest.waitForExplicitFinish(); + + (async () => { + var failed = false; + try { + await SpecialPowers.importInMainProcess("invalid file for import"); + } catch (e) { + ok(e.toString().indexOf("NS_ERROR_MALFORMED_URI") > -1, "Exception should be for a malformed URI"); + failed = true; + } + ok(failed, "An invalid import should throw"); + + const testingResource = "resource://testing-common/ImportTesting.jsm"; + var script = SpecialPowers.loadChromeScript(SimpleTest.getTestFileURL('importtesting_chromescript.js')); + + script.addMessageListener("ImportTesting:IsModuleLoadedReply", handleFirstReply); + script.sendAsyncMessage("ImportTesting:IsModuleLoaded", testingResource); + + async function handleFirstReply(aMsg) { + ok(!aMsg, "ImportTesting.jsm shouldn't be loaded before we import it"); + + try { + await SpecialPowers.importInMainProcess(testingResource); + } catch (e) { + ok(false, "Unexpected exception when importing a valid resource: " + e.toString()); + } + + script.removeMessageListener("ImportTesting:IsModuleLoadedReply", handleFirstReply); + script.addMessageListener("ImportTesting:IsModuleLoadedReply", handleSecondReply); + script.sendAsyncMessage("ImportTesting:IsModuleLoaded", testingResource); + } + + function handleSecondReply(aMsg) { + script.removeMessageListener("ImportTesting:IsModuleLoadedReply", handleSecondReply); + + ok(aMsg, "ImportTesting.jsm should be loaded after we import it"); + + SimpleTest.finish(); + } + })(); + + </script> +</div> +</body> +</html> |