diff --git a/docshell/test/browser/Makefile.in b/docshell/test/browser/Makefile.in index 99fb3c4d00d1..6b407998ad9a 100644 --- a/docshell/test/browser/Makefile.in +++ b/docshell/test/browser/Makefile.in @@ -45,6 +45,8 @@ include $(topsrcdir)/config/rules.mk _BROWSER_TEST_FILES = \ browser_bug349769.js \ + browser_bug388121-1.js \ + browser_bug388121-2.js \ $(NULL) libs:: $(_BROWSER_TEST_FILES) diff --git a/docshell/test/browser/browser_bug349769.js b/docshell/test/browser/browser_bug349769.js index 14a7536d8bdd..eecf6bf892ec 100644 --- a/docshell/test/browser/browser_bug349769.js +++ b/docshell/test/browser/browser_bug349769.js @@ -11,6 +11,7 @@ function test() { function testLoad(event) { newBrowser.removeEventListener("load", testLoad, true); + is (event.target, newBrowser.contentDocument, "Unexpected target"); var prin = newBrowser.contentDocument.nodePrincipal; isnot(prin, null, "Loaded principal must not be null when adding " + uri); isnot(prin, undefined, "Loaded principal must not be undefined when loading " + uri); diff --git a/docshell/test/browser/browser_bug388121-1.js b/docshell/test/browser/browser_bug388121-1.js new file mode 100644 index 000000000000..54c3140e9878 --- /dev/null +++ b/docshell/test/browser/browser_bug388121-1.js @@ -0,0 +1,27 @@ +function test() { + waitForExplicitFinish(); + + var newTab; + var newBrowser; + const secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"]. + getService(Components.interfaces.nsIScriptSecurityManager); + + function testLoad(event) { + newBrowser.removeEventListener("load", testLoad, true); + is (event.target, newBrowser.contentDocument, "Unexpected target"); + var prin = newBrowser.contentDocument.nodePrincipal; + isnot(prin, null, "Loaded principal must not be null"); + isnot(prin, undefined, "Loaded principal must not be undefined"); + is(secMan.isSystemPrincipal(prin), false, + "Loaded principal must not be system"); + gBrowser.removeTab(newTab); + + finish(); + } + + newTab = gBrowser.addTab(); + newBrowser = gBrowser.getBrowserForTab(newTab); + newBrowser.contentWindow.location.href = "about:blank" + newBrowser.addEventListener("load", testLoad, true); +} + diff --git a/docshell/test/browser/browser_bug388121-2.js b/docshell/test/browser/browser_bug388121-2.js new file mode 100644 index 000000000000..5f5d8c422246 --- /dev/null +++ b/docshell/test/browser/browser_bug388121-2.js @@ -0,0 +1,59 @@ +function test() { + waitForExplicitFinish(); + + var w; + const secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"]. + getService(Components.interfaces.nsIScriptSecurityManager); + var iteration = 1; + const uris = ["", "about:blank"]; + var uri; + var origDoc; + + function testLoad() { + if (w.document == origDoc) { + // Go back to polling + setTimeout(testLoad, 10); + return; + } + var prin = w.document.nodePrincipal; + isnot(prin, null, "Loaded principal must not be null when adding " + uri); + isnot(prin, undefined, "Loaded principal must not be undefined when loading " + uri); + is(secMan.isSystemPrincipal(prin), false, + "Loaded principal must not be system when loading " + uri); + w.close(); + + if (iteration == uris.length) { + finish(); + } else { + ++iteration; + doTest(); + } + } + + function doTest() { + uri = uris[iteration - 1]; + w = window.open(uri, "_blank", "width=10,height=10"); + var prin = w.document.nodePrincipal; + if (!uri) { + uri = undefined; + } + isnot(prin, null, "Forced principal must not be null when loading " + uri); + isnot(prin, undefined, + "Forced principal must not be undefined when loading " + uri); + is(secMan.isSystemPrincipal(prin), false, + "Forced principal must not be system when loading " + uri); + if (uri == undefined) { + // No actual load here, so just move along. + w.close(); + ++iteration; + doTest(); + } else { + origDoc = w.document; + // Need to poll, because load listeners on the content window won't + // survive the load. + setTimeout(testLoad, 10); + } + } + + doTest(); +}