author | Jared Wein <jwein@mozilla.com> |
Tue, 21 Jan 2014 19:04:24 +0000 | |
changeset 164553 | be932ecd964e251a8b9ff855402920f791c05588 |
parent 164552 | 868c2aeb6e55a2416afa45f76c155ff08fafeaae |
child 164554 | d1c8fd742642a509b26ab6d1e5ce51e0ee007c11 |
push id | 38744 |
push user | kwierso@gmail.com |
push date | Wed, 22 Jan 2014 01:36:02 +0000 |
treeherder | mozilla-inbound@554475555e21 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | gijs |
bugs | 932928 |
milestone | 29.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/components/customizableui/content/customizeMode.inc.xul +++ b/browser/components/customizableui/content/customizeMode.inc.xul @@ -2,18 +2,27 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <hbox id="customization-container" flex="1" hidden="true"> <vbox flex="1" id="customization-palette-container"> <label id="customization-header"> &customizeMode.menuAndToolbars.header; </label> + <hbox id="customization-empty" hidden="true"> + <label>&customizeMode.menuAndToolbars.empty;</label> + <label onclick="BrowserOpenAddonsMgr('addons://discovery/');" + onkeypress="BrowserOpenAddonsMgr('addons://discovery/');" + id="customization-more-tools" + class="text-link"> + &customizeMode.menuAndToolbars.emptyLink; + </label> + </hbox> <vbox id="customization-palette" flex="1"/> - <spacer flex="1"/> + <spacer id="customization-spacer" flex="1"/> <hbox> <button id="customization-toolbar-visibility-button" label="&customizeMode.toolbars;" class="customizationmode-button" type="menu"> <menupopup id="customization-toolbar-menu" onpopupshowing="onViewToolbarsPopupShowing(event)"/> </button> <spacer flex="1"/> <button id="customization-reset-button" oncommand="gCustomizeMode.reset();" label="&customizeMode.restoreDefaults;" class="customizationmode-button"/> </hbox> </vbox>
--- a/browser/components/customizableui/src/CustomizeMode.jsm +++ b/browser/components/customizableui/src/CustomizeMode.jsm @@ -43,16 +43,18 @@ function CustomizeMode(aWindow) { this.document = aWindow.document; this.browser = aWindow.gBrowser; // There are two palettes - there's the palette that can be overlayed with // toolbar items in browser.xul. This is invisible, and never seen by the // user. Then there's the visible palette, which gets populated and displayed // to the user when in customizing mode. this.visiblePalette = this.document.getElementById(kPaletteId); + this.paletteEmptyNotice = this.document.getElementById("customization-empty"); + this.paletteSpacer = this.document.getElementById("customization-spacer"); }; CustomizeMode.prototype = { _changed: false, _transitioning: false, window: null, document: null, // areas is used to cache the customizable areas when in customization mode. @@ -223,16 +225,18 @@ CustomizeMode.prototype = { CustomizableUI.addListener(this); window.PanelUI.endBatchUpdate(); this._customizing = true; this._transitioning = false; // Show the palette now that the transition has finished. this.visiblePalette.hidden = false; + this.paletteSpacer.hidden = true; + this._updateEmptyPaletteNotice(); this._handler.isEnteringCustomizeMode = false; this.dispatchToolboxEvent("customizationready"); if (!this._wantToBeInCustomizeMode) { this.exit(); } }.bind(this)).then(null, function(e) { ERROR(e); @@ -268,17 +272,19 @@ CustomizeMode.prototype = { this._removePanelCustomizationPlaceholders(); let window = this.window; let document = this.document; let documentElement = document.documentElement; // Hide the palette before starting the transition for increased perf. + this.paletteSpacer.hidden = false; this.visiblePalette.hidden = true; + this.paletteEmptyNotice.hidden = true; this._transitioning = true; Task.spawn(function() { yield this.depopulatePalette(); yield this._doTransition(false); @@ -908,19 +914,25 @@ CustomizeMode.prototype = { this.visiblePalette.appendChild(this.makePaletteItem(widget, "palette")); } } }, _onUIChange: function() { this._changed = true; this._updateResetButton(); + this._updateEmptyPaletteNotice(); this.dispatchToolboxEvent("customizationchange"); }, + _updateEmptyPaletteNotice: function() { + let paletteItems = this.visiblePalette.getElementsByTagName("toolbarpaletteitem"); + this.paletteEmptyNotice.hidden = !!paletteItems.length; + }, + _updateResetButton: function() { let btn = this.document.getElementById("customization-reset-button"); btn.disabled = CustomizableUI.inDefaultState; }, handleEvent: function(aEvent) { switch(aEvent.type) { case "toolbarvisibilitychange":
--- a/browser/components/customizableui/test/browser.ini +++ b/browser/components/customizableui/test/browser.ini @@ -32,16 +32,17 @@ skip-if = os == "mac" # Because of the specific widths, this test is fragile and has been disabled. # NB: it was designed for mac only, but started randomly failing there. skip-if = true [browser_914863_disabled_help_quit_buttons.js] [browser_918049_skipintoolbarset_dnd.js] [browser_923857_customize_mode_event_wrapping_during_reset.js] [browser_927717_customize_drag_empty_toolbar.js] +[browser_932928_show_notice_when_palette_empty.js] [browser_934113_menubar_removable.js] # Because this test is about the menubar, it can't be run on mac skip-if = os == "mac" [browser_946320_tabs_from_other_computers.js] skip-if = os == "linux"
new file mode 100644 --- /dev/null +++ b/browser/components/customizableui/test/browser_932928_show_notice_when_palette_empty.js @@ -0,0 +1,35 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +// There should be an advert to get more addons when the palette is empty. +add_task(function() { + yield startCustomizing(); + let visiblePalette = document.getElementById("customization-palette"); + let emptyPaletteNotice = document.getElementById("customization-empty"); + is(emptyPaletteNotice.hidden, true, "The empty palette notice should not be shown when there are items in the palette."); + + while (visiblePalette.childElementCount) { + gCustomizeMode.addToToolbar(visiblePalette.children[0]); + } + is(visiblePalette.childElementCount, 0, "There shouldn't be any items remaining in the visible palette."); + is(emptyPaletteNotice.hidden, false, "The empty palette notice should be shown when there are no items in the palette."); + + yield endCustomizing(); + yield startCustomizing(); + visiblePalette = document.getElementById("customization-palette"); + emptyPaletteNotice = document.getElementById("customization-empty"); + is(emptyPaletteNotice.hidden, false, + "The empty palette notice should be shown when there are no items in the palette and cust. mode is re-entered."); + + gCustomizeMode.removeFromArea(document.getElementById("wrapper-home-button")); + is(emptyPaletteNotice.hidden, true, + "The empty palette notice should not be shown when there is at least one item in the palette."); +}); + +add_task(function asyncCleanup() { + yield endCustomizing(); + yield resetCustomization(); +});
--- a/browser/locales/en-US/chrome/browser/browser.dtd +++ b/browser/locales/en-US/chrome/browser/browser.dtd @@ -672,16 +672,18 @@ just addresses the organization to follo <!ENTITY social.learnMore.accesskey "l"> <!ENTITY social.closeNotificationItem.label "Not Now"> <!ENTITY customizeMode.tabTitle "Customize &brandShortName;"> <!ENTITY customizeMode.menuAndToolbars.label "Menu and toolbars"> <!ENTITY customizeMode.menuAndToolbars.header "More Tools to Add to the Menu and Toolbar"> +<!ENTITY customizeMode.menuAndToolbars.empty "Want more tools?"> +<!ENTITY customizeMode.menuAndToolbars.emptyLink "Choose from thousands of add-ons"> <!ENTITY customizeMode.restoreDefaults "Restore Defaults"> <!ENTITY customizeMode.toolbars "Show / Hide Toolbars"> <!ENTITY social.chatBar.commandkey "c"> <!ENTITY social.chatBar.label "Focus chats"> <!ENTITY social.chatBar.accesskey "c"> <!ENTITY social.markpageMenu.accesskey "P">