From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser/browser_ext_sessions_incognito.js | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_sessions_incognito.js (limited to 'browser/components/extensions/test/browser/browser_ext_sessions_incognito.js') diff --git a/browser/components/extensions/test/browser/browser_ext_sessions_incognito.js b/browser/components/extensions/test/browser/browser_ext_sessions_incognito.js new file mode 100644 index 0000000000..aecad9e8ec --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_sessions_incognito.js @@ -0,0 +1,113 @@ +"use strict"; + +add_task(async function test_sessions_tab_value_private() { + Services.obs.notifyObservers(null, "browser:purge-session-history"); + is( + SessionStore.getClosedWindowCount(), + 0, + "No closed window sessions at start of test" + ); + + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + browser_specific_settings: { + gecko: { + id: "exampleextension@mozilla.org", + }, + }, + permissions: ["sessions"], + }, + background() { + browser.test.onMessage.addListener(async (msg, pbw) => { + if (msg == "value") { + await browser.test.assertRejects( + browser.sessions.setWindowValue(pbw.windowId, "foo", "bar"), + /Invalid window ID/, + "should not be able to set incognito window session data" + ); + await browser.test.assertRejects( + browser.sessions.getWindowValue(pbw.windowId, "foo"), + /Invalid window ID/, + "should not be able to get incognito window session data" + ); + await browser.test.assertRejects( + browser.sessions.removeWindowValue(pbw.windowId, "foo"), + /Invalid window ID/, + "should not be able to remove incognito window session data" + ); + await browser.test.assertRejects( + browser.sessions.setTabValue(pbw.tabId, "foo", "bar"), + /Invalid tab ID/, + "should not be able to set incognito tab session data" + ); + await browser.test.assertRejects( + browser.sessions.getTabValue(pbw.tabId, "foo"), + /Invalid tab ID/, + "should not be able to get incognito tab session data" + ); + await browser.test.assertRejects( + browser.sessions.removeTabValue(pbw.tabId, "foo"), + /Invalid tab ID/, + "should not be able to remove incognito tab session data" + ); + } + if (msg == "restore") { + await browser.test.assertRejects( + browser.sessions.restore(), + /Could not restore object/, + "should not be able to restore incognito last window session data" + ); + if (pbw) { + await browser.test.assertRejects( + browser.sessions.restore(pbw.sessionId), + /Could not restore object/, + `should not be able to restore incognito session ID ${pbw.sessionId} session data` + ); + } + } + browser.test.sendMessage("done"); + }); + }, + }); + + let winData = await getIncognitoWindow("http://mochi.test:8888/"); + await extension.startup(); + + // Test value set/get APIs on a private window and tab. + extension.sendMessage("value", winData.details); + await extension.awaitMessage("done"); + + // Test restoring a private tab. + let tab = await BrowserTestUtils.openNewForegroundTab( + winData.win.gBrowser, + "http://example.com" + ); + let sessionUpdatePromise = BrowserTestUtils.waitForSessionStoreUpdate(tab); + BrowserTestUtils.removeTab(tab); + await sessionUpdatePromise; + let closedTabData = SessionStore.getClosedTabDataForWindow(winData.win); + + extension.sendMessage("restore", { + sessionId: String(closedTabData[0].closedId), + }); + await extension.awaitMessage("done"); + + // Test restoring a private window. + sessionUpdatePromise = BrowserTestUtils.waitForSessionStoreUpdate( + winData.win.gBrowser.selectedTab + ); + await BrowserTestUtils.closeWindow(winData.win); + await sessionUpdatePromise; + + is( + SessionStore.getClosedWindowCount(), + 0, + "The closed window was added to Recently Closed Windows" + ); + + // If the window gets restored, test will fail with an unclosed window. + extension.sendMessage("restore"); + await extension.awaitMessage("done"); + + await extension.unload(); +}); -- cgit v1.2.3