97 lines
2.6 KiB
JavaScript
97 lines
2.6 KiB
JavaScript
"use strict";
|
|
|
|
const REQUEST_URL =
|
|
"http://httpsfirst.com/browser/dom/security/test/https-first/";
|
|
|
|
async function promiseGetHistoryIndex(browser) {
|
|
if (!SpecialPowers.Services.appinfo.sessionHistoryInParent) {
|
|
return SpecialPowers.spawn(browser, [], function () {
|
|
let shistory =
|
|
docShell.browsingContext.childSessionHistory.legacySHistory;
|
|
return shistory.index;
|
|
});
|
|
}
|
|
|
|
let shistory = browser.browsingContext.sessionHistory;
|
|
return shistory.index;
|
|
}
|
|
|
|
async function testNavigations() {
|
|
// Load initial site
|
|
|
|
let url1 = REQUEST_URL + "file_navigation.html?foo1";
|
|
let url2 = REQUEST_URL + "file_navigation.html?foo2";
|
|
let url3 = REQUEST_URL + "file_navigation.html?foo3";
|
|
|
|
let loaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
|
|
BrowserTestUtils.startLoadingURIString(gBrowser, url1);
|
|
await loaded;
|
|
|
|
// Load another site
|
|
loaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
|
|
await SpecialPowers.spawn(
|
|
gBrowser.selectedBrowser,
|
|
[url2],
|
|
async url => (content.location.href = url)
|
|
);
|
|
await loaded;
|
|
|
|
// Load another site
|
|
loaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
|
|
await SpecialPowers.spawn(
|
|
gBrowser.selectedBrowser,
|
|
[url3],
|
|
async url => (content.location.href = url)
|
|
);
|
|
await loaded;
|
|
is(
|
|
await promiseGetHistoryIndex(gBrowser.selectedBrowser),
|
|
2,
|
|
"correct session history index after load 3"
|
|
);
|
|
|
|
// Go back one site by clicking the back button
|
|
info("Clicking back button");
|
|
loaded = BrowserTestUtils.waitForLocationChange(gBrowser, url2);
|
|
let backButton = document.getElementById("back-button");
|
|
backButton.click();
|
|
await loaded;
|
|
is(
|
|
await promiseGetHistoryIndex(gBrowser.selectedBrowser),
|
|
1,
|
|
"correct session history index after going back for the first time"
|
|
);
|
|
|
|
// Go back again
|
|
info("Clicking back button again");
|
|
loaded = BrowserTestUtils.waitForLocationChange(gBrowser, url1);
|
|
backButton.click();
|
|
await loaded;
|
|
is(
|
|
await promiseGetHistoryIndex(gBrowser.selectedBrowser),
|
|
0,
|
|
"correct session history index after going back for the second time"
|
|
);
|
|
}
|
|
|
|
add_task(async function () {
|
|
waitForExplicitFinish();
|
|
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["dom.security.https_first", true]],
|
|
});
|
|
|
|
await testNavigations();
|
|
|
|
// If fission is enabled we also want to test the navigations with the bfcache
|
|
// in the parent.
|
|
if (SpecialPowers.getBoolPref("fission.autostart")) {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["fission.bfcacheInParent", true]],
|
|
});
|
|
|
|
await testNavigations();
|
|
}
|
|
|
|
finish();
|
|
});
|