From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../base/content/test/popups/browser_popupUI.js | 192 +++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 browser/base/content/test/popups/browser_popupUI.js (limited to 'browser/base/content/test/popups/browser_popupUI.js') diff --git a/browser/base/content/test/popups/browser_popupUI.js b/browser/base/content/test/popups/browser_popupUI.js new file mode 100644 index 0000000000..27423b5868 --- /dev/null +++ b/browser/base/content/test/popups/browser_popupUI.js @@ -0,0 +1,192 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +add_task(async function toolbar_ui_visibility() { + SpecialPowers.pushPrefEnv({ set: [["dom.disable_open_during_load", false]] }); + + let popupOpened = BrowserTestUtils.waitForNewWindow({ url: "about:blank" }); + BrowserTestUtils.openNewForegroundTab( + gBrowser, + "data:text/html," + ); + const win = await popupOpened; + const doc = win.document; + + ok(win.gURLBar, "location bar exists in the popup"); + isnot(win.gURLBar.clientWidth, 0, "location bar is visible in the popup"); + ok(win.gURLBar.readOnly, "location bar is read-only in the popup"); + isnot( + doc.getElementById("Browser:OpenLocation").getAttribute("disabled"), + "true", + "'open location' command is not disabled in the popup" + ); + + EventUtils.synthesizeKey("t", { accelKey: true }, win); + is( + win.gBrowser.browsers.length, + 1, + "Accel+T doesn't open a new tab in the popup" + ); + is( + gBrowser.browsers.length, + 3, + "Accel+T opened a new tab in the parent window" + ); + gBrowser.removeCurrentTab(); + + EventUtils.synthesizeKey("w", { accelKey: true }, win); + ok(win.closed, "Accel+W closes the popup"); + + if (!win.closed) { + win.close(); + } + gBrowser.removeCurrentTab(); +}); + +add_task(async function titlebar_buttons_visibility() { + if (!navigator.platform.startsWith("Win")) { + ok(true, "Testing only on Windows"); + return; + } + + const BUTTONS_MAY_VISIBLE = true; + const BUTTONS_NEVER_VISIBLE = false; + + // Always open a new window. + // With default behavior, it opens a new tab, that doesn't affect button + // visibility at all. + Services.prefs.setIntPref("browser.link.open_newwindow", 2); + + const drawInTitlebarValues = [ + [1, BUTTONS_MAY_VISIBLE], + [0, BUTTONS_NEVER_VISIBLE], + ]; + const windowFeaturesValues = [ + // Opens a popup + ["width=300,height=100", BUTTONS_NEVER_VISIBLE], + ["toolbar", BUTTONS_NEVER_VISIBLE], + ["menubar", BUTTONS_NEVER_VISIBLE], + ["menubar,toolbar", BUTTONS_NEVER_VISIBLE], + + // Opens a new window + ["", BUTTONS_MAY_VISIBLE], + ]; + const menuBarShownValues = [true, false]; + + for (const [drawInTitlebar, drawInTitlebarButtons] of drawInTitlebarValues) { + Services.prefs.setIntPref("browser.tabs.inTitlebar", drawInTitlebar); + + for (const [ + windowFeatures, + windowFeaturesButtons, + ] of windowFeaturesValues) { + for (const menuBarShown of menuBarShownValues) { + CustomizableUI.setToolbarVisibility("toolbar-menubar", menuBarShown); + + const popupPromise = BrowserTestUtils.waitForNewWindow("about:blank"); + BrowserTestUtils.openNewForegroundTab( + gBrowser, + `data:text/html;charset=UTF-8,` + ); + const popupWin = await popupPromise; + + const menubar = popupWin.document.querySelector("#toolbar-menubar"); + const menubarIsShown = + menubar.getAttribute("autohide") != "true" || + menubar.getAttribute("inactive") != "true"; + const buttonsInMenubar = menubar.querySelector( + ".titlebar-buttonbox-container" + ); + const buttonsInMenubarShown = + menubarIsShown && + popupWin.getComputedStyle(buttonsInMenubar).display != "none"; + + const buttonsInTabbar = popupWin.document.querySelector( + "#TabsToolbar .titlebar-buttonbox-container" + ); + const buttonsInTabbarShown = + popupWin.getComputedStyle(buttonsInTabbar).display != "none"; + + const params = `drawInTitlebar=${drawInTitlebar}, windowFeatures=${windowFeatures}, menuBarShown=${menuBarShown}`; + if ( + drawInTitlebarButtons == BUTTONS_MAY_VISIBLE && + windowFeaturesButtons == BUTTONS_MAY_VISIBLE + ) { + ok( + buttonsInMenubarShown || buttonsInTabbarShown, + `Titlebar buttons should be visible: ${params}` + ); + } else { + ok( + !buttonsInMenubarShown, + `Titlebar buttons should not be visible: ${params}` + ); + ok( + !buttonsInTabbarShown, + `Titlebar buttons should not be visible: ${params}` + ); + } + + const closedPopupPromise = BrowserTestUtils.windowClosed(popupWin); + popupWin.close(); + await closedPopupPromise; + gBrowser.removeCurrentTab(); + } + } + } + + CustomizableUI.setToolbarVisibility("toolbar-menubar", false); + Services.prefs.clearUserPref("browser.tabs.inTitlebar"); + Services.prefs.clearUserPref("browser.link.open_newwindow"); +}); + +// Test only `visibility` rule here, to verify bug 1636229 fix. +// Other styles and ancestors can be different for each OS. +function isVisible(element) { + const style = element.ownerGlobal.getComputedStyle(element); + return style.visibility == "visible"; +} + +async function testTabBarVisibility() { + SpecialPowers.pushPrefEnv({ set: [["dom.disable_open_during_load", false]] }); + + const popupOpened = BrowserTestUtils.waitForNewWindow({ url: "about:blank" }); + BrowserTestUtils.openNewForegroundTab( + gBrowser, + "data:text/html," + ); + const win = await popupOpened; + const doc = win.document; + + ok( + !isVisible(doc.getElementById("TabsToolbar")), + "tabbar should be hidden for popup" + ); + + const closedPopupPromise = BrowserTestUtils.windowClosed(win); + win.close(); + await closedPopupPromise; + + gBrowser.removeCurrentTab(); +} + +add_task(async function tabbar_visibility() { + await testTabBarVisibility(); +}); + +add_task(async function tabbar_visibility_with_theme() { + const extension = ExtensionTestUtils.loadExtension({ + manifest: { + theme: {}, + }, + }); + + await extension.startup(); + + await testTabBarVisibility(); + + await extension.unload(); +}); -- cgit v1.2.3