зеркало из https://github.com/mozilla/gecko-dev.git
69 строки
2.2 KiB
JavaScript
69 строки
2.2 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/browser/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 = BrowserTestUtils.addTab(gBrowser);
|
|
gBrowser.selectedTab = newTab;
|
|
gTestBrowser = gBrowser.selectedBrowser;
|
|
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(() => {
|
|
// about:blank is expected to be loaded here.
|
|
var url = gHttpTestRoot + "file_bug902350.html";
|
|
BrowserTestUtils.browserLoaded(gTestBrowser, true /*includeSubFrames*/).then(MixedTest1A);
|
|
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);
|
|
}
|
|
|