Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
SimpleTest.requestCompleteLog();
loadTestSubscript("head_sessions.js");
async function run_test_extension(incognitoOverride) {
function background() {
browser.test.onMessage.addListener((msg, filter) => {
if (msg == "check-sessions") {
browser.sessions.getRecentlyClosed(filter).then(recentlyClosed => {
browser.test.sendMessage("recentlyClosed", recentlyClosed);
});
}
});
}
let extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["sessions", "tabs"],
},
background,
incognitoOverride,
});
// Open a private browsing window.
let privateWin = await BrowserTestUtils.openNewBrowserWindow({
private: true,
});
await extension.startup();
const {
Management: {
global: { windowTracker },
},
} = ChromeUtils.importESModule("resource://gre/modules/Extension.sys.mjs");
let privateWinId = windowTracker.getId(privateWin);
extension.sendMessage("check-sessions");
let recentlyClosed = await extension.awaitMessage("recentlyClosed");
recordInitialTimestamps(recentlyClosed.map(item => item.lastModified));
// Open and close two tabs in the private window
let tab = await BrowserTestUtils.openNewForegroundTab(
privateWin.gBrowser,
);
BrowserTestUtils.removeTab(tab);
tab = await BrowserTestUtils.openNewForegroundTab(
privateWin.gBrowser,
);
let sessionPromise = BrowserTestUtils.waitForSessionStoreUpdate(tab);
BrowserTestUtils.removeTab(tab);
await sessionPromise;
extension.sendMessage("check-sessions");
recentlyClosed = await extension.awaitMessage("recentlyClosed");
let expectedCount =
!incognitoOverride || incognitoOverride == "not_allowed" ? 0 : 2;
checkRecentlyClosed(
recentlyClosed.filter(onlyNewItemsFilter),
expectedCount,
privateWinId,
true
);
// Close the private window.
await BrowserTestUtils.closeWindow(privateWin);
extension.sendMessage("check-sessions");
recentlyClosed = await extension.awaitMessage("recentlyClosed");
is(
recentlyClosed.filter(onlyNewItemsFilter).length,
0,
"the closed private window info was not found in recently closed data"
);
await extension.unload();
}
add_task(async function test_sessions_get_recently_closed_default() {
await run_test_extension();
});
add_task(async function test_sessions_get_recently_closed_private_incognito() {
await run_test_extension("spanning");
await run_test_extension("not_allowed");
});