summaryrefslogtreecommitdiffstats
path: root/docshell/test/browser/browser_loadDisallowInherit.js
diff options
context:
space:
mode:
Diffstat (limited to 'docshell/test/browser/browser_loadDisallowInherit.js')
-rw-r--r--docshell/test/browser/browser_loadDisallowInherit.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/docshell/test/browser/browser_loadDisallowInherit.js b/docshell/test/browser/browser_loadDisallowInherit.js
new file mode 100644
index 000000000..71789890f
--- /dev/null
+++ b/docshell/test/browser/browser_loadDisallowInherit.js
@@ -0,0 +1,65 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function test() {
+ waitForExplicitFinish();
+
+ let tab = gBrowser.selectedTab = gBrowser.addTab();
+ registerCleanupFunction(function () {
+ gBrowser.removeTab(tab);
+ });
+
+ let browser = gBrowser.getBrowserForTab(tab);
+
+ function loadURL(url, flags, func) {
+ browser.addEventListener("load", function loadListener(e) {
+ if (browser.currentURI.spec != url)
+ return;
+ browser.removeEventListener(e.type, loadListener, true);
+ func();
+ }, true);
+ browser.loadURIWithFlags(url, flags, null, null, null);
+ }
+
+ // Load a normal http URL
+ function testURL(url, func) {
+ loadURL("http://example.com/", 0, function () {
+ let pagePrincipal = browser.contentPrincipal;
+ ok(pagePrincipal, "got principal for http:// page");
+
+ // Now load the URL normally
+ loadURL(url, 0, function () {
+ ok(browser.contentPrincipal.equals(pagePrincipal), url + " should inherit principal");
+
+ // Now load the URL and disallow inheriting the principal
+ let webNav = Components.interfaces.nsIWebNavigation;
+ loadURL(url, webNav.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL, function () {
+ let newPrincipal = browser.contentPrincipal;
+ ok(newPrincipal, "got inner principal");
+ ok(!newPrincipal.equals(pagePrincipal),
+ url + " should not inherit principal when loaded with DISALLOW_INHERIT_OWNER");
+
+ func();
+ });
+ });
+ });
+ }
+
+ let urls = [
+ "data:text/html,<body>hi",
+ // We used to test javascript: here as well, but now that we no longer run
+ // javascript: in a sandbox, we end up not running it at all in the
+ // DISALLOW_INHERIT_OWNER case, so never actually do a load for it at all.
+ ];
+
+ function nextTest() {
+ let url = urls.shift();
+ if (url)
+ testURL(url, nextTest);
+ else
+ finish();
+ }
+
+ nextTest();
+}
+