Files
sousa-gecko/devtools/client/framework/test/browser_toolbox_contentpage_contextmenu.js
Sam Johnson 16e0adf958 Bug 2021084 - Use new helper instead of prefs for native context menu tests. r=mstange
I found these tests which can be simplified now that there is a helper for determining whether a context menu is native.

Differential Revision: https://phabricator.services.mozilla.com/D289433
2026-05-01 00:06:53 +00:00

84 lines
2.8 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const URL = "data:text/html;charset=utf8,<div>test content context menu</div>";
/**
* Check that the DevTools context menu opens without triggering the content
* context menu. See Bug 1591140.
*/
add_task(async function () {
const tab = await addTab(URL);
info("Test context menu conflict with dom.event.contextmenu.enabled=true");
await pushPref("dom.event.contextmenu.enabled", true);
await checkConflictWithContentPageMenu(tab);
info("Test context menu conflict with dom.event.contextmenu.enabled=false");
await pushPref("dom.event.contextmenu.enabled", false);
await checkConflictWithContentPageMenu(tab);
});
async function checkConflictWithContentPageMenu(tab) {
const toolbox = await gDevTools.showToolboxForTab(tab, {
toolId: "inspector",
});
info("Check that the content page context menu works as expected");
const contextMenu = document.getElementById("contentAreaContextMenu");
is(contextMenu.state, "closed", "Content contextmenu is closed");
info("Show the content context menu");
const awaitPopupShown = BrowserTestUtils.waitForEvent(
contextMenu,
"popupshown"
);
await BrowserTestUtils.synthesizeMouseAtCenter(
"div",
{
type: "contextmenu",
button: 2,
centered: true,
},
gBrowser.selectedBrowser
);
await awaitPopupShown;
is(contextMenu.state, "open", "Content contextmenu is open");
info("Hide the content context menu");
const awaitPopupHidden = BrowserTestUtils.waitForEvent(
contextMenu,
"popuphidden"
);
contextMenu.hidePopup();
await awaitPopupHidden;
is(contextMenu.state, "closed", "Content contextmenu is closed again");
info("Check the DevTools menu opens without opening the content menu");
const onContextMenuPopup = toolbox.once("menu-open");
// Use inspector search box for the test, any other element should be ok as
// well.
const inspector = toolbox.getPanel("inspector");
synthesizeContextMenuEvent(inspector.searchBox);
await onContextMenuPopup;
const textboxContextMenu = toolbox.getTextBoxContextMenu();
is(contextMenu.state, "closed", "Content contextmenu is still closed");
is(textboxContextMenu.state, "open", "Toolbox contextmenu is open");
info("Check that the toolbox context menu is closed when pressing ESCAPE");
const onContextMenuHidden = toolbox.once("menu-close");
if (textboxContextMenu.isNativeMenu) {
info("Using hidePopup semantics because of macOS native context menus.");
textboxContextMenu.hidePopup();
} else {
EventUtils.sendKey("ESCAPE", toolbox.win);
}
await onContextMenuHidden;
is(textboxContextMenu.state, "closed", "Toolbox contextmenu is closed.");
await toolbox.destroy();
}