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/contextMenu/browser_contextmenu_touch.js | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_touch.js (limited to 'browser/base/content/test/contextMenu/browser_contextmenu_touch.js') diff --git a/browser/base/content/test/contextMenu/browser_contextmenu_touch.js b/browser/base/content/test/contextMenu/browser_contextmenu_touch.js new file mode 100644 index 0000000000..2f4e5a79c6 --- /dev/null +++ b/browser/base/content/test/contextMenu/browser_contextmenu_touch.js @@ -0,0 +1,94 @@ +/* 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/. */ + +/* This test checks that context menus are in touchmode + * when opened through a touch event (long tap). */ + +async function openAndCheckContextMenu(contextMenu, target) { + is(contextMenu.state, "closed", "Context menu is initally closed."); + + let popupshown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown"); + EventUtils.synthesizeNativeTapAtCenter(target, true); + await popupshown; + + is(contextMenu.state, "open", "Context menu is open."); + is( + contextMenu.getAttribute("touchmode"), + "true", + "Context menu is in touchmode." + ); + + contextMenu.hidePopup(); + + popupshown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown"); + EventUtils.synthesizeMouseAtCenter(target, { type: "contextmenu" }); + await popupshown; + + is(contextMenu.state, "open", "Context menu is open."); + ok( + !contextMenu.hasAttribute("touchmode"), + "Context menu is not in touchmode." + ); + + contextMenu.hidePopup(); +} + +// Ensure that we can run touch events properly for windows [10] +add_setup(async function () { + let isWindows = AppConstants.isPlatformAndVersionAtLeast("win", "10.0"); + await SpecialPowers.pushPrefEnv({ + set: [["apz.test.fails_with_native_injection", isWindows]], + }); +}); + +// Test the content area context menu. +add_task(async function test_contentarea_contextmenu_touch() { + await BrowserTestUtils.withNewTab("about:blank", async function (browser) { + let contextMenu = document.getElementById("contentAreaContextMenu"); + await openAndCheckContextMenu(contextMenu, browser); + }); +}); + +// Test the back and forward buttons. +add_task(async function test_back_forward_button_contextmenu_touch() { + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + await BrowserTestUtils.withNewTab( + "http://example.com", + async function (browser) { + let contextMenu = document.getElementById("backForwardMenu"); + + let backbutton = document.getElementById("back-button"); + let notDisabled = TestUtils.waitForCondition( + () => !backbutton.hasAttribute("disabled") + ); + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + BrowserTestUtils.loadURIString(browser, "http://example.org"); + await notDisabled; + await openAndCheckContextMenu(contextMenu, backbutton); + + let forwardbutton = document.getElementById("forward-button"); + notDisabled = TestUtils.waitForCondition( + () => !forwardbutton.hasAttribute("disabled") + ); + backbutton.click(); + await notDisabled; + await openAndCheckContextMenu(contextMenu, forwardbutton); + } + ); +}); + +// Test the toolbar context menu. +add_task(async function test_toolbar_contextmenu_touch() { + let toolbarContextMenu = document.getElementById("toolbar-context-menu"); + let target = document.getElementById("PanelUI-menu-button"); + await openAndCheckContextMenu(toolbarContextMenu, target); +}); + +// Test the urlbar input context menu. +add_task(async function test_urlbar_contextmenu_touch() { + let urlbar = document.getElementById("urlbar"); + let textBox = urlbar.querySelector("moz-input-box"); + let menu = textBox.menupopup; + await openAndCheckContextMenu(menu, textBox); +}); -- cgit v1.2.3