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 --- .../fullscreen/browser_fullscreen_context_menu.js | 142 +++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_context_menu.js (limited to 'browser/base/content/test/fullscreen/browser_fullscreen_context_menu.js') diff --git a/browser/base/content/test/fullscreen/browser_fullscreen_context_menu.js b/browser/base/content/test/fullscreen/browser_fullscreen_context_menu.js new file mode 100644 index 0000000000..ec874f1a3f --- /dev/null +++ b/browser/base/content/test/fullscreen/browser_fullscreen_context_menu.js @@ -0,0 +1,142 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +async function openContextMenu(itemElement, win = window) { + let popupShownPromise = BrowserTestUtils.waitForEvent( + itemElement.ownerDocument, + "popupshown" + ); + EventUtils.synthesizeMouseAtCenter( + itemElement, + { + type: "contextmenu", + button: 2, + }, + win + ); + let { target } = await popupShownPromise; + return target; +} + +async function testContextMenu() { + await BrowserTestUtils.withNewTab("about:blank", async () => { + let panelUIMenuButton = document.getElementById("PanelUI-menu-button"); + let contextMenu = await openContextMenu(panelUIMenuButton); + let array1 = AppConstants.MENUBAR_CAN_AUTOHIDE + ? [ + ".customize-context-moveToPanel", + ".customize-context-removeFromToolbar", + "#toolbarItemsMenuSeparator", + "#toggle_toolbar-menubar", + "#toggle_PersonalToolbar", + "#viewToolbarsMenuSeparator", + ".viewCustomizeToolbar", + ] + : [ + ".customize-context-moveToPanel", + ".customize-context-removeFromToolbar", + "#toolbarItemsMenuSeparator", + "#toggle_PersonalToolbar", + "#viewToolbarsMenuSeparator", + ".viewCustomizeToolbar", + ]; + let result1 = verifyContextMenu(contextMenu, array1); + ok(!result1, "Expected no errors verifying context menu items"); + contextMenu.hidePopup(); + let onFullscreen = Promise.all([ + BrowserTestUtils.waitForEvent(window, "fullscreen"), + BrowserTestUtils.waitForEvent( + window, + "sizemodechange", + false, + e => window.fullScreen + ), + BrowserTestUtils.waitForPopupEvent(contextMenu, "hidden"), + ]); + document.getElementById("View:FullScreen").doCommand(); + contextMenu.hidePopup(); + info("waiting for fullscreen"); + await onFullscreen; + // make sure the toolbox is visible if it's autohidden + document.getElementById("Browser:OpenLocation").doCommand(); + info("trigger the context menu"); + let contextMenu2 = await openContextMenu(panelUIMenuButton); + info("context menu should be open, verify its menu items"); + let array2 = AppConstants.MENUBAR_CAN_AUTOHIDE + ? [ + ".customize-context-moveToPanel", + ".customize-context-removeFromToolbar", + "#toolbarItemsMenuSeparator", + "#toggle_toolbar-menubar", + "#toggle_PersonalToolbar", + "#viewToolbarsMenuSeparator", + ".viewCustomizeToolbar", + `menuseparator[contexttype="fullscreen"]`, + `.fullscreen-context-autohide`, + `menuitem[contexttype="fullscreen"]`, + ] + : [ + ".customize-context-moveToPanel", + ".customize-context-removeFromToolbar", + "#toolbarItemsMenuSeparator", + "#toggle_PersonalToolbar", + "#viewToolbarsMenuSeparator", + ".viewCustomizeToolbar", + `menuseparator[contexttype="fullscreen"]`, + `.fullscreen-context-autohide`, + `menuitem[contexttype="fullscreen"]`, + ]; + let result2 = verifyContextMenu(contextMenu2, array2); + ok(!result2, "Expected no errors verifying context menu items"); + let onExitFullscreen = Promise.all([ + BrowserTestUtils.waitForEvent(window, "fullscreen"), + BrowserTestUtils.waitForEvent( + window, + "sizemodechange", + false, + e => !window.fullScreen + ), + BrowserTestUtils.waitForPopupEvent(contextMenu2, "hidden"), + ]); + document.getElementById("View:FullScreen").doCommand(); + contextMenu2.hidePopup(); + await onExitFullscreen; + }); +} + +function verifyContextMenu(contextMenu, itemSelectors) { + // Ignore hidden nodes + let items = Array.from(contextMenu.children).filter(n => + BrowserTestUtils.is_visible(n) + ); + let menuAsText = items + .map(n => { + return n.nodeName == "menuseparator" + ? "---" + : `${n.label} (${n.command})`; + }) + .join("\n"); + info("Got actual context menu items: \n" + menuAsText); + + try { + is( + items.length, + itemSelectors.length, + "Context menu has the expected number of items" + ); + for (let i = 0; i < items.length; i++) { + let selector = itemSelectors[i]; + ok( + items[i].matches(selector), + `Item at ${i} matches expected selector: ${selector}` + ); + } + } catch (ex) { + return ex; + } + return null; +} + +add_task(testContextMenu); -- cgit v1.2.3