CustomizableUI.addWidgetToArea( "bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 4 ); var bookmarksMenuButton = document.getElementById("bookmarks-menu-button"); var BMB_menuPopup = document.getElementById("BMB_bookmarksPopup"); var BMB_showAllBookmarks = document.getElementById("BMB_bookmarksShowAll"); var contextMenu = document.getElementById("placesContext"); var newBookmarkItem = document.getElementById("placesContext_new:bookmark"); waitForExplicitFinish(); add_task(async function testPopup() { info("Checking popup context menu before moving the bookmarks button"); await checkPopupContextMenu(); let pos = CustomizableUI.getPlacementOfWidget( "bookmarks-menu-button" ).position; let target = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL; CustomizableUI.addWidgetToArea("bookmarks-menu-button", target); CustomizableUI.addWidgetToArea( "bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, pos ); info("Checking popup context menu after moving the bookmarks button"); await checkPopupContextMenu(); CustomizableUI.reset(); }); async function checkPopupContextMenu() { let clickTarget = bookmarksMenuButton; BMB_menuPopup.setAttribute("style", "transition: none;"); let popupShownPromise = onPopupEvent(BMB_menuPopup, "shown"); EventUtils.synthesizeMouseAtCenter(clickTarget, {}); info("Waiting for bookmarks menu to be shown."); await popupShownPromise; let contextMenuShownPromise = onPopupEvent(contextMenu, "shown"); EventUtils.synthesizeMouseAtCenter(BMB_showAllBookmarks, { type: "contextmenu", button: 2, }); info("Waiting for context menu on bookmarks menu to be shown."); await contextMenuShownPromise; ok( !newBookmarkItem.hasAttribute("disabled"), "New bookmark item shouldn't be disabled" ); let contextMenuHiddenPromise = onPopupEvent(contextMenu, "hidden"); contextMenu.hidePopup(); BMB_menuPopup.removeAttribute("style"); info("Waiting for context menu on bookmarks menu to be hidden."); await contextMenuHiddenPromise; let popupHiddenPromise = onPopupEvent(BMB_menuPopup, "hidden"); // Can't use synthesizeMouseAtCenter because the dropdown panel is in the way EventUtils.synthesizeKey("KEY_Escape"); info("Waiting for bookmarks menu to be hidden."); await popupHiddenPromise; } function onPopupEvent(popup, evt) { let fullEvent = "popup" + evt; return new Promise(resolve => { let onPopupHandler = e => { if (e.target == popup) { popup.removeEventListener(fullEvent, onPopupHandler); resolve(); } }; popup.addEventListener(fullEvent, onPopupHandler); }); }