Bug 1371542 - Support popping up search/history of single search bar (urlbar) in UITour. r=Gijs,mak draft
authorRex Lee <rexboy@mozilla.com>
Mon, 19 Jun 2017 14:49:48 +0800
changeset 605944 838b722a671c2b05d87191ffd668db6da05e4f96
parent 605863 a418121d46250f91728b86d9eea331029c264c30
child 636634 ea91037f1769529dc35539cc9f528e9d2692b6b6
push id67559
push userbmo:rexboy@mozilla.com
push dateMon, 10 Jul 2017 04:12:34 +0000
reviewersGijs, mak
bugs1371542
milestone56.0a1
Bug 1371542 - Support popping up search/history of single search bar (urlbar) in UITour. r=Gijs,mak MozReview-Commit-ID: JGNKxROa1ph
browser/components/uitour/UITour.jsm
browser/components/uitour/test/browser.ini
browser/components/uitour/test/browser_showMenu_urlbar.js
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -1397,16 +1397,33 @@ this.UITour = {
           });
         }
 
         let widgetWrapper = widgetGroupWrapper.forWindow(aWindow);
         aWindow.PanelUI.showSubView(widgetGroupWrapper.viewId,
                                     widgetWrapper.anchor,
                                     placement.area);
       }).catch(log.error);
+    } else if (aMenuName == "urlbar") {
+      this.getTarget(aWindow, "urlbar").then(target => {
+        let urlbar = target.node;
+        urlbar.popup.addEventListener("popupshown", evt => {
+          aOpenCallback && aOpenCallback(evt);
+        }, {once: true});
+        urlbar.focus();
+        // To demonstrate the ability of searching, we type "Firefox" in advance
+        // for URLBar's dropdown. To limit the search results on browser-related
+        // items, we use "Firefox" hard-coded rather than l10n brandShortName
+        // entity to avoid unrelated or unpredicted results for, like, Nightly
+        // or translated entites.
+        const SEARCH_STRING = "Firefox";
+        urlbar.value = SEARCH_STRING;
+        urlbar.select();
+        urlbar.controller.startSearch(SEARCH_STRING);
+      }).catch(Cu.reportError);
     }
   },
 
   hideMenu(aWindow, aMenuName) {
     log.debug("hideMenu:", aMenuName);
     function closeMenuButton(aMenuBtn) {
       if (aMenuBtn && aMenuBtn.boxObject)
         aMenuBtn.boxObject.openMenu(false);
--- a/browser/components/uitour/test/browser.ini
+++ b/browser/components/uitour/test/browser.ini
@@ -17,16 +17,17 @@ skip-if = true # Bug 1113038 - Intermitt
 skip-if = os == "linux" # Intermittent NS_ERROR_NOT_AVAILABLE [nsIUrlClassifierDBService.beginUpdate]
 tag = trackingprotection
 support-files =
   !/browser/base/content/test/general/benignPage.html
   !/browser/base/content/test/general/trackingPage.html
 [browser_trackingProtection_tour.js]
 tag = trackingprotection
 [browser_showMenu_controlCenter.js]
+[browser_showMenu_urlbar.js]
 tag = trackingprotection
 [browser_UITour.js]
 skip-if = os == "linux" # Intermittent failures, bug 951965
 [browser_UITour2.js]
 [browser_UITour3.js]
 skip-if = os == "linux" # Linux: Bug 986760, Bug 989101.
 [browser_UITour_availableTargets.js]
 [browser_UITour_annotation_size_attributes.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/uitour/test/browser_showMenu_urlbar.js
@@ -0,0 +1,20 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(setup_UITourTest);
+
+var gTestTab;
+var gContentAPI;
+var gContentWindow;
+
+add_UITour_task(async function test_openSearchPanel() {
+  let urlbar = window.document.getElementById("urlbar");
+  urlbar.focus();
+  await showMenuPromise("urlbar");
+  is(urlbar.popup.state, "open", "Popup was opened");
+  is(urlbar.controller.searchString, "Firefox", "Search string is Firefox");
+  urlbar.popup.closePopup();
+  is(urlbar.popup.state, "closed", "Popup was closed");
+});