diff options
Diffstat (limited to 'dom/base/test/browser_bug902350.js')
-rw-r--r-- | dom/base/test/browser_bug902350.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/dom/base/test/browser_bug902350.js b/dom/base/test/browser_bug902350.js new file mode 100644 index 000000000..cce014779 --- /dev/null +++ b/dom/base/test/browser_bug902350.js @@ -0,0 +1,66 @@ +/* + * Mixed Content Block frame navigates for target="_top" - Test for Bug 902350 + */ + + +const PREF_ACTIVE = "security.mixed_content.block_active_content"; +const gHttpTestRoot = "https://example.com/tests/dom/base/test/"; +var origBlockActive; +var gTestBrowser = null; + +registerCleanupFunction(function() { + // Set preferences back to their original values + Services.prefs.setBoolPref(PREF_ACTIVE, origBlockActive); +}); + +function MixedTestsCompleted() { + gBrowser.removeCurrentTab(); + window.focus(); + finish(); +} + +function test() { + waitForExplicitFinish(); + + origBlockActive = Services.prefs.getBoolPref(PREF_ACTIVE); + + Services.prefs.setBoolPref(PREF_ACTIVE, true); + + var newTab = gBrowser.addTab(); + gBrowser.selectedTab = newTab; + gTestBrowser = gBrowser.selectedBrowser; + newTab.linkedBrowser.stop() + + BrowserTestUtils.browserLoaded(gTestBrowser, true /*includeSubFrames*/).then(MixedTest1A); + var url = gHttpTestRoot + "file_bug902350.html"; + gTestBrowser.loadURI(url); +} + +// Need to capture 2 loads, one for the main page and one for the iframe +function MixedTest1A() { + BrowserTestUtils.browserLoaded(gTestBrowser, true /*includeSubFrames*/).then(MixedTest1B); +} + +// Find the iframe and click the link in it +function MixedTest1B() { + BrowserTestUtils.browserLoaded(gTestBrowser).then(MixedTest1C); + + ContentTask.spawn(gTestBrowser, null, function() { + var frame = content.document.getElementById("testing_frame"); + var topTarget = frame.contentWindow.document.getElementById("topTarget"); + topTarget.click(); + }); + + // The link click should have caused a load and should not invoke the Mixed Content Blocker + let {gIdentityHandler} = gTestBrowser.ownerGlobal; + ok (!gIdentityHandler._identityBox.classList.contains("mixedActiveBlocked"), + "Mixed Content Doorhanger did not appear when trying to navigate top"); +} + +function MixedTest1C() { + ContentTask.spawn(gTestBrowser, null, function() { + Assert.equal(content.location.href, "http://example.com/", + "Navigating to insecure domain through target='_top' failed.") + }).then(MixedTestsCompleted); +} + |