summaryrefslogtreecommitdiffstats
path: root/js/xpconnect/tests/chrome/test_sharedChromeCompartment.html
diff options
context:
space:
mode:
Diffstat (limited to 'js/xpconnect/tests/chrome/test_sharedChromeCompartment.html')
-rw-r--r--js/xpconnect/tests/chrome/test_sharedChromeCompartment.html63
1 files changed, 63 insertions, 0 deletions
diff --git a/js/xpconnect/tests/chrome/test_sharedChromeCompartment.html b/js/xpconnect/tests/chrome/test_sharedChromeCompartment.html
new file mode 100644
index 0000000000..b653f19751
--- /dev/null
+++ b/js/xpconnect/tests/chrome/test_sharedChromeCompartment.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1517694
+-->
+<head>
+ <meta charset="utf-8">
+ <title>Test for Bug 1517694</title>
+ <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="chrome://global/skin"/>
+ <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
+ <script type="application/javascript">
+"use strict";
+
+/** Test for Bug 1517694 **/
+const { XPCOMUtils } = ChromeUtils.importESModule(
+ "resource://gre/modules/XPCOMUtils.sys.mjs"
+);
+
+SimpleTest.waitForExplicitFinish();
+
+function go() {
+ var frame = $('subframe');
+ frame.onload = null;
+
+ var isSameCompartment = Cu.getJSTestingFunctions().isSameCompartment;
+
+ ok(isSameCompartment(window, frame.contentWindow),
+ "System window is in same compartment");
+
+ var sameCompSb = Cu.Sandbox(window);
+ ok(isSameCompartment(window, sameCompSb),
+ "System sandbox is in same compartment");
+
+ var ownCompSb = Cu.Sandbox(window, {freshCompartment: true});
+ ok(!isSameCompartment(window, ownCompSb),
+ "Sandbox created with freshCompartment is in separate compartment");
+
+ // Sandbox created in fresh-compartment sandbox must be in shared
+ // compartment.
+ var sb = Cu.evalInSandbox(`
+ let principal =
+ Cc["@mozilla.org/systemprincipal;1"].getService(Ci.nsIPrincipal);
+ Cu.Sandbox(principal)
+ `, ownCompSb);
+ ok(isSameCompartment(window, sb),
+ "System sandbox created in different compartment is in system compartment");
+
+ ok(isSameCompartment(window, XPCOMUtils),
+ "Object defined in JSM is in same compartment");
+
+ SimpleTest.finish();
+}
+
+ </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1517694">Mozilla Bug 1517694</a>
+
+<iframe id="subframe" src="file_empty.html" onload="go()"></iframe>
+
+</body>
+</html>