Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
const { TabStateFlusher } = ChromeUtils.importESModule(
"resource:///modules/sessionstore/TabStateFlusher.sys.mjs"
);
add_task(async function test_blank() {
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:blank" },
async function (browser) {
BrowserTestUtils.startLoadingURIString(browser, "https://example.com/");
await BrowserTestUtils.browserLoaded(browser);
ok(!gBrowser.canGoBack, "about:blank wasn't added to session history");
}
);
});
add_task(async function test_newtab() {
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:blank" },
async function (browser) {
// Can't load it directly because that'll use a preloaded tab if present.
let stopped = BrowserTestUtils.browserStopped(browser, "about:newtab");
BrowserTestUtils.startLoadingURIString(browser, "about:newtab");
await stopped;
stopped = BrowserTestUtils.browserStopped(
browser,
);
BrowserTestUtils.startLoadingURIString(browser, "https://example.com/");
await stopped;
// This makes sure the parent process has the most up-to-date notion
// of the tab's session history.
await TabStateFlusher.flush(browser);
let tab = gBrowser.getTabForBrowser(browser);
let tabState = JSON.parse(SessionStore.getTabState(tab));
Assert.equal(
tabState.entries.length,
2,
"We should have 2 entries in the session history."
);
Assert.equal(
tabState.entries[0].url,
"about:newtab",
"about:newtab should be the first entry."
);
Assert.ok(gBrowser.canGoBack, "Should be able to browse back.");
}
);
});
// Test for bug 1676492, when newtab shows a blank page, don't add it to SH
add_task(async function test_blank_newtab() {
await SpecialPowers.pushPrefEnv({
set: [["browser.newtabpage.enabled", false]],
});
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:newtab" },
async function (browser) {
const loaded = BrowserTestUtils.browserLoaded(browser);
BrowserTestUtils.startLoadingURIString(browser, "https://example.com/");
await loaded;
await TabStateFlusher.flush(browser);
const tab = gBrowser.getTabForBrowser(browser);
const tabState = JSON.parse(SessionStore.getTabState(tab));
Assert.equal(tabState.entries.length, 1, "Should only have one entry");
Assert.equal(
tabState.entries[0].url,
"Should have example.com SH entry"
);
Assert.ok(!gBrowser.canGoBack, "Should not be able to go back");
}
);
await SpecialPowers.popPrefEnv();
});