Backed out changeset 11b79af86747 (bug 1410763) for failing browser-chrome's browser/extensions/onboarding/test/browser/browser_onboarding_uitour.js on Windows 7 debug without e10s. r=backout
authorSebastian Hengst <archaeopteryx@coole-files.de>
Tue, 24 Oct 2017 13:49:28 +0200
changeset 685726 baca0818395316e15c4c59a8382bccb14d9168e7
parent 685725 c41827492ec5321f2e10b5093010d108b3eeac37
child 685727 6a3a4af186cec4e5f60a6139dbd91b554db880d0
push id86016
push userkgupta@mozilla.com
push dateWed, 25 Oct 2017 01:53:44 +0000
reviewersbackout
bugs1410763
milestone58.0a1
backs out11b79af86747b8e3ac7222b65567b071f1318af0
Backed out changeset 11b79af86747 (bug 1410763) for failing browser-chrome's browser/extensions/onboarding/test/browser/browser_onboarding_uitour.js on Windows 7 debug without e10s. r=backout
browser/components/uitour/UITour.jsm
browser/components/uitour/test/browser_UITour5.js
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -110,17 +110,23 @@ this.UITour = {
         return aDocument.getAnonymousElementByAttribute(statusButton,
                                                         "class",
                                                         "toolbarbutton-icon");
       },
       // This is a fake widgetName starting with the "appMenu-" prefix so we know
       // to automatically open the appMenu when annotating this target.
       widgetName: "appMenu-fxa-label",
     }],
-    ["addons",      {query: "#appMenu-addons-button"}],
+    ["addons",      {
+      query: (aDocument) => {
+        // select toolbar icon if exist, fallback to appMenu item
+        let node = aDocument.getElementById("add-ons-button");
+        return node ? node : aDocument.getElementById("appMenu-addons-button");
+      },
+    }],
     ["appMenu",     {
       addTargetListener: (aDocument, aCallback) => {
         let panelPopup = aDocument.defaultView.PanelUI.panel;
         panelPopup.addEventListener("popupshown", aCallback);
       },
       query: "#PanelUI-button",
       removeTargetListener: (aDocument, aCallback) => {
         let panelPopup = aDocument.defaultView.PanelUI.panel;
@@ -141,17 +147,23 @@ this.UITour = {
     }],
     ["forget", {
       allowAdd: true,
       query: "#panic-button",
       widgetName: "panic-button",
     }],
     ["help",        {query: "#appMenu-help-button"}],
     ["home",        {query: "#home-button"}],
-    ["library",     {query: "#appMenu-library-button"}],
+    ["library",     {
+      query: (aDocument) => {
+        // select toolbar icon if exist, fallback to appMenu item
+        let node = aDocument.getElementById("library-button");
+        return node ? node : aDocument.getElementById("appMenu-library-button");
+      },
+    }],
     ["pocket", {
       allowAdd: true,
       query: (aDocument) => {
         // The pocket's urlbar page action button is pre-defined in the DOM.
         // It would be hidden if toggled off from the urlbar.
         let node = aDocument.getElementById("pocket-button-box");
         if (node && node.hidden == false) {
           return node;
--- a/browser/components/uitour/test/browser_UITour5.js
+++ b/browser/components/uitour/test/browser_UITour5.js
@@ -1,17 +1,51 @@
 "use strict";
 
 var gTestTab;
 var gContentAPI;
 var gContentWindow;
 
 add_task(setup_UITourTest);
 
+add_UITour_task(async function test_highlight_library_icon_in_toolbar() {
+  let highlight = document.getElementById("UITourHighlight");
+  is_element_hidden(highlight, "Highlight should initially be hidden");
+
+  // Test highlighting the library button
+  let highlightVisiblePromise = elementVisiblePromise(highlight, "Should show highlight");
+  gContentAPI.showHighlight("library");
+  await highlightVisiblePromise;
+  UITour.getTarget(window, "library").then((target) => {
+    is("library-button", target.node.id, "Should highlight the right target");
+  });
+});
+
+add_UITour_task(async function test_highlight_addons_icon_in_toolbar() {
+  CustomizableUI.addWidgetToArea("add-ons-button", CustomizableUI.AREA_NAVBAR, 0);
+  ok(!UITour.availableTargetsCache.has(window),
+     "Targets should be evicted from cache after widget change");
+  let highlight = document.getElementById("UITourHighlight");
+  is_element_hidden(highlight, "Highlight should initially be hidden");
+
+  // Test highlighting the addons button on toolbar
+  let highlightVisiblePromise = elementVisiblePromise(highlight, "Should show highlight");
+  gContentAPI.showHighlight("addons");
+  await highlightVisiblePromise;
+  UITour.getTarget(window, "addons").then((target) => {
+    is("add-ons-button", target.node.id, "Should highlight the right target");
+    CustomizableUI.removeWidgetFromArea("add-ons-button");
+  });
+});
+
 add_UITour_task(async function test_highlight_library_and_show_library_subview() {
+  CustomizableUI.removeWidgetFromArea("library-button");
+
+  ok(!UITour.availableTargetsCache.has(window),
+     "Targets should be evicted from cache after widget change");
   let highlight = document.getElementById("UITourHighlight");
   is_element_hidden(highlight, "Highlight should initially be hidden");
 
   // Test highlighting the library button
   let appMenu = PanelUI.panel;
   let appMenuShownPromise = promisePanelElementShown(window, appMenu);
   let highlightVisiblePromise = elementVisiblePromise(highlight, "Should show highlight");
   gContentAPI.showHighlight("library");
@@ -32,9 +66,11 @@ add_UITour_task(async function test_high
   is(PanelUI.multiView.current.id, "appMenu-libraryView", "Should show the library subview");
   is(appMenu.state, "open", "Should still open the app menu for the library subview");
 
   // Clean up
   let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu);
   gContentAPI.hideMenu("appMenu");
   await appMenuHiddenPromise;
   is(appMenu.state, "closed", "Should close the app menu");
+  CustomizableUI.addWidgetToArea("library", CustomizableUI.AREA_NAVBAR, 0);
 });
+