Bug 1215376 - allow itemToSelect to be null in menu closing test utility draft
authorRob Wu <rob@robwu.nl>
Sat, 09 Sep 2017 19:41:56 +0200
changeset 716029 2c9bedf468eb65f483a49267b4ce142ecc31d086
parent 715663 f78a83244fbebe8a469ae3512fce7f638cab7e1f
child 716030 703490b5e551455bee0ebcdecaab2aa2ea5321ba
push id94307
push userbmo:rob@robwu.nl
push dateFri, 05 Jan 2018 00:24:53 +0000
bugs1215376
milestone59.0a1
Bug 1215376 - allow itemToSelect to be null in menu closing test utility Most close*Menu methods in browser tests allow itemToSelect to be null. Some did not. Now they do (after this commit) MozReview-Commit-ID: 2jSGAi2R3ZD
browser/components/extensions/test/browser/head.js
--- a/browser/components/extensions/test/browser/head.js
+++ b/browser/components/extensions/test/browser/head.js
@@ -329,17 +329,21 @@ async function openExtensionContextMenu(
   EventUtils.synthesizeMouseAtCenter(extensionMenu, {});
   await popupShownPromise;
   return extensionMenu;
 }
 
 async function closeExtensionContextMenu(itemToSelect, modifiers = {}) {
   let contentAreaContextMenu = document.getElementById("contentAreaContextMenu");
   let popupHiddenPromise = BrowserTestUtils.waitForEvent(contentAreaContextMenu, "popuphidden");
-  EventUtils.synthesizeMouseAtCenter(itemToSelect, modifiers);
+  if (itemToSelect) {
+    EventUtils.synthesizeMouseAtCenter(itemToSelect, modifiers);
+  } else {
+    contentAreaContextMenu.hidePopup();
+  }
   await popupHiddenPromise;
 
   // Bug 1351638: parent menu fails to close intermittently, make sure it does.
   contentAreaContextMenu.hidePopup();
 }
 
 async function openToolsMenu(win = window) {
   const node = win.document.getElementById("tools-menu");
@@ -356,21 +360,25 @@ async function openToolsMenu(win = windo
   return menu;
 }
 
 function closeToolsMenu(itemToSelect, win = window) {
   const menu = win.document.getElementById("menu_ToolsPopup");
   const hidden = BrowserTestUtils.waitForEvent(menu, "popuphidden");
   if (AppConstants.platform === "macosx") {
     // Mocking on OSX, see above.
-    itemToSelect.doCommand();
+    if (itemToSelect) {
+      itemToSelect.doCommand();
+    }
     menu.dispatchEvent(new MouseEvent("popuphiding"));
     menu.dispatchEvent(new MouseEvent("popuphidden"));
+  } else if (itemToSelect) {
+    EventUtils.synthesizeMouseAtCenter(itemToSelect, {}, win);
   } else {
-    EventUtils.synthesizeMouseAtCenter(itemToSelect, {}, win);
+    menu.hidePopup();
   }
   return hidden;
 }
 
 async function openChromeContextMenu(menuId, target, win = window) {
   const node = win.document.querySelector(target);
   const menu = win.document.getElementById(menuId);
   const shown = BrowserTestUtils.waitForEvent(menu, "popupshown");