Bug 1390055 - should highlight library and addons at toolbar if exist;r=gijs
MozReview-Commit-ID: Ijarh8qp0D9
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -916,16 +916,17 @@
removable="true"
cui-areatype="toolbar"
tooltip="dynamic-shortcut-tooltip"/>
<toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
removable="true"
oncommand="PanelUI.showSubView('appMenu-libraryView', this, null, event);"
closemenu="none"
+ cui-areatype="toolbar"
label="&places.library.title;">
<box class="toolbarbutton-animatable-box">
<image class="toolbarbutton-animatable-image"/>
</box>
</toolbarbutton>
</hbox>
--- 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;
@@ -144,17 +150,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: "#pocket-button",
}],
["privateWindow", {query: "#appMenu-private-window-button"}],
["quit", {query: "#appMenu-quit-button"}],
["readerMode-urlBar", {query: "#reader-mode-button"}],
["search", {
--- 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,10 +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);
});