Mypal/dom/base/test/browser_bug902350.js

67 lines
2.1 KiB
JavaScript

/*
* 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);
}