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_reopenIn.js | 164 +++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 browser/components/contextualidentity/test/browser/browser_reopenIn.js (limited to 'browser/components/contextualidentity/test/browser/browser_reopenIn.js') diff --git a/browser/components/contextualidentity/test/browser/browser_reopenIn.js b/browser/components/contextualidentity/test/browser/browser_reopenIn.js new file mode 100644 index 0000000000..9bda63b201 --- /dev/null +++ b/browser/components/contextualidentity/test/browser/browser_reopenIn.js @@ -0,0 +1,164 @@ +"use strict"; + +const TEST_HOST = "example.com"; +const TEST_URL = + "http://" + + TEST_HOST + + "/browser/browser/components/contextualidentity/test/browser/"; + +async function openTabMenuFor(tab) { + let tabMenu = tab.ownerDocument.getElementById("tabContextMenu"); + + let tabMenuShown = BrowserTestUtils.waitForEvent(tabMenu, "popupshown"); + EventUtils.synthesizeMouseAtCenter( + tab, + { type: "contextmenu" }, + tab.ownerGlobal + ); + await tabMenuShown; + + return tabMenu; +} + +async function openReopenMenuForTab(tab) { + await openTabMenuFor(tab); + + let reopenItem = tab.ownerDocument.getElementById( + "context_reopenInContainer" + ); + ok(!reopenItem.hidden, "Reopen in Container item should be shown"); + + let reopenMenu = reopenItem.getElementsByTagName("menupopup")[0]; + let reopenMenuShown = BrowserTestUtils.waitForEvent(reopenMenu, "popupshown"); + reopenItem.openMenu(true); + await reopenMenuShown; + + return reopenMenu; +} + +function checkMenuItem(reopenMenu, shown, hidden) { + for (let id of shown) { + ok( + reopenMenu.querySelector(`menuitem[data-usercontextid="${id}"]`), + `User context id ${id} should exist` + ); + } + for (let id of hidden) { + ok( + !reopenMenu.querySelector(`menuitem[data-usercontextid="${id}"]`), + `User context id ${id} shouldn't exist` + ); + } +} + +function openTabInContainer(gBrowser, reopenMenu, id) { + let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, TEST_URL, true); + let menuitem = reopenMenu.querySelector( + `menuitem[data-usercontextid="${id}"]` + ); + reopenMenu.activateItem(menuitem); + return tabPromise; +} + +add_task(async function testReopen() { + await SpecialPowers.pushPrefEnv({ + set: [["privacy.userContext.enabled", true]], + }); + + let tab = await BrowserTestUtils.openNewForegroundTab({ + gBrowser, + url: TEST_URL, + }); + ok( + !tab.hasAttribute("usercontextid"), + "Tab with No Container should be opened" + ); + + let reopenMenu = await openReopenMenuForTab(tab); + checkMenuItem(reopenMenu, [1, 2, 3, 4], [0]); + + let containerTab = await openTabInContainer(gBrowser, reopenMenu, "1"); + + is( + containerTab.getAttribute("usercontextid"), + "1", + "Tab with UCI=1 should be opened" + ); + is( + containerTab.linkedBrowser.currentURI.spec, + TEST_URL, + "Same page should be opened" + ); + + reopenMenu = await openReopenMenuForTab(containerTab); + checkMenuItem(reopenMenu, [0, 2, 3, 4], [1]); + + let noContainerTab = await openTabInContainer(gBrowser, reopenMenu, "0"); + + ok( + !noContainerTab.hasAttribute("usercontextid"), + "Tab with no UCI should be opened" + ); + is( + noContainerTab.linkedBrowser.currentURI.spec, + TEST_URL, + "Same page should be opened" + ); + + BrowserTestUtils.removeTab(tab); + BrowserTestUtils.removeTab(containerTab); + BrowserTestUtils.removeTab(noContainerTab); +}); + +add_task(async function testDisabled() { + await SpecialPowers.pushPrefEnv({ + set: [["privacy.userContext.enabled", false]], + }); + + let tab = await BrowserTestUtils.openNewForegroundTab({ + gBrowser, + url: TEST_URL, + }); + ok( + !tab.hasAttribute("usercontextid"), + "Tab with No Container should be opened" + ); + + let tabMenu = await openTabMenuFor(tab); + let reopenItem = document.getElementById("context_reopenInContainer"); + ok(reopenItem.hidden, "Reopen in Container item should be hidden"); + + // Close the tab menu. + tabMenu.hidePopup(); + + BrowserTestUtils.removeTab(tab); +}); + +add_task(async function testPrivateMode() { + await SpecialPowers.pushPrefEnv({ + set: [["privacy.userContext.enabled", true]], + }); + + let privateWindow = await BrowserTestUtils.openNewBrowserWindow({ + private: true, + }); + let tab = await BrowserTestUtils.openNewForegroundTab({ + gBrowser: privateWindow.gBrowser, + url: TEST_URL, + }); + ok( + !tab.hasAttribute("usercontextid"), + "Tab with No Container should be opened" + ); + + let tabMenu = await openTabMenuFor(tab); + let reopenItem = privateWindow.document.getElementById( + "context_reopenInContainer" + ); + ok(reopenItem.hidden, "Reopen in Container item should be hidden"); + + // Close the tab menu. + tabMenu.hidePopup(); + + await BrowserTestUtils.closeWindow(privateWindow); +}); -- cgit v1.2.3