summaryrefslogtreecommitdiffstats
path: root/testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html')
-rw-r--r--testing/mochitest/tests/Harness_sanity/test_importInMainProcess.html56
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>