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 666891 462d33c522719da1f3bc069181b455982a592550
parent 666884 e4261f5b96ebfd63e7cb8af3035ff9fea90c74a5
child 666892 91b02bbcb22b23d8b77d0d39539d7397841c8118
push id80539
push userbmo:rob@robwu.nl
push dateTue, 19 Sep 2017 10:50:55 +0000
bugs1215376
milestone57.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
@@ -321,17 +321,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");
@@ -348,21 +352,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");