/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Test that textbox context menu elements are still displayed correctly after reopening // the toolbox. Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1510182. add_task(async function () { await addTab(`data:text/html;charset=utf-8,
test
`); info("Testing the textbox context menu a first time"); const { toolbox, inspector } = await openInspector(); await checkContextMenuOnSearchbox(inspector, toolbox); // Destroy the toolbox and try the context menu again with a new toolbox. await toolbox.destroy(); info("Testing the textbox context menu after reopening the toolbox"); const { toolbox: newToolbox, inspector: newInspector } = await openInspector(); await checkContextMenuOnSearchbox(newInspector, newToolbox); }); async function checkContextMenuOnSearchbox(inspector, toolbox) { // The same context menu is used for any text input. // Here we use the inspector searchbox for this test because it is always available. const searchbox = inspector.panelDoc.getElementById("inspector-searchbox"); info( "Simulating context click on the textbox and expecting the menu to open" ); const onContextMenu = toolbox.once("menu-open"); synthesizeContextMenuEvent(searchbox); await onContextMenu; const textboxContextMenu = toolbox.getTextBoxContextMenu(); info("Wait until menu items are rendered"); const pasteElement = textboxContextMenu.querySelector("#editmenu-paste"); await waitUntil(() => !!pasteElement.getAttribute("label")); is( pasteElement.getAttribute("label"), "Paste", "Paste is visible and localized" ); info("Closing the menu"); const onContextMenuHidden = toolbox.once("menu-close"); textboxContextMenu.hidePopup(); await onContextMenuHidden; }