summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js b/browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js
new file mode 100644
index 0000000000..45b1b34be1
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js
@@ -0,0 +1,93 @@
+/* -*- 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,
+ "http://example.com"
+ );
+ BrowserTestUtils.removeTab(tab);
+
+ tab = await BrowserTestUtils.openNewForegroundTab(
+ privateWin.gBrowser,
+ "http://example.com"
+ );
+ 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");
+});