Bug 1425736 - Don't show the attention badge for download failures on the application menu button. r=Gijs
MozReview-Commit-ID: A882hXl5o0
--- a/browser/components/customizableui/test/browser_panelUINotifications.js
+++ b/browser/components/customizableui/test/browser_panelUINotifications.js
@@ -187,25 +187,16 @@ add_task(async function testMultipleBadg
is(menuButton.getAttribute("badge-status"), "fxa-needs-authentication", "Should have fxa-needs-authentication badge status");
AppMenuNotifications.showBadgeOnlyNotification("update-succeeded");
is(menuButton.getAttribute("badge-status"), "update-succeeded", "Should have update-succeeded badge status (update > fxa)");
AppMenuNotifications.showBadgeOnlyNotification("update-failed");
is(menuButton.getAttribute("badge-status"), "update-failed", "Should have update-failed badge status");
- AppMenuNotifications.showBadgeOnlyNotification("download-severe");
- is(menuButton.getAttribute("badge-status"), "download-severe", "Should have download-severe badge status");
-
- AppMenuNotifications.showBadgeOnlyNotification("download-warning");
- is(menuButton.getAttribute("badge-status"), "download-warning", "Should have download-warning badge status");
-
- AppMenuNotifications.removeNotification(/^download-/);
- is(menuButton.getAttribute("badge-status"), "update-failed", "Should have update-failed badge status");
-
AppMenuNotifications.removeNotification(/^update-/);
is(menuButton.getAttribute("badge-status"), "fxa-needs-authentication", "Should have fxa-needs-authentication badge status");
AppMenuNotifications.removeNotification(/^fxa-/);
is(menuButton.hasAttribute("badge-status"), false, "Should not have a badge status");
await PanelUI.show();
is(menuButton.hasAttribute("badge-status"), false, "Should not have a badge status (Hamburger menu opened)");
--- a/browser/components/downloads/DownloadsCommon.jsm
+++ b/browser/components/downloads/DownloadsCommon.jsm
@@ -36,18 +36,16 @@ const { classes: Cc, interfaces: Ci, uti
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetters(this, {
NetUtil: "resource://gre/modules/NetUtil.jsm",
PluralForm: "resource://gre/modules/PluralForm.jsm",
AppConstants: "resource://gre/modules/AppConstants.jsm",
- AppMenuNotifications: "resource://gre/modules/AppMenuNotifications.jsm",
- CustomizableUI: "resource:///modules/CustomizableUI.jsm",
DownloadHistory: "resource://gre/modules/DownloadHistory.jsm",
Downloads: "resource://gre/modules/Downloads.jsm",
DownloadUIHelper: "resource://gre/modules/DownloadUIHelper.jsm",
DownloadUtils: "resource://gre/modules/DownloadUtils.jsm",
FileUtils: "resource://gre/modules/FileUtils.jsm",
OS: "resource://gre/modules/osfile.jsm",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm",
RecentWindow: "resource:///modules/RecentWindow.jsm",
@@ -1054,16 +1052,29 @@ const DownloadsViewPrototype = {
/**
* Private function used to refresh an individual view.
*
* @note Subclasses should override this.
*/
_updateView() {
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
},
+
+ /**
+ * Computes aggregate values and propagates the changes to our views.
+ */
+ _updateViews() {
+ // Do not update the status indicators during batch loads of download items.
+ if (this._loading) {
+ return;
+ }
+
+ this._refreshProperties();
+ this._views.forEach(this._updateView, this);
+ },
};
// DownloadsIndicatorData
/**
* This object registers itself with DownloadsData as a view, and transforms the
* notifications it receives into overall status data, that is then broadcast to
* the registered download status indicators.
@@ -1168,41 +1179,16 @@ DownloadsIndicatorDataCtor.prototype = {
this._attentionSuppressed = aValue;
this._attention = DownloadsCommon.ATTENTION_NONE;
this._updateViews();
return aValue;
},
_attentionSuppressed: false,
/**
- * Computes aggregate values and propagates the changes to our views.
- */
- _updateViews() {
- // Do not update the status indicators during batch loads of download items.
- if (this._loading) {
- return;
- }
-
- this._refreshProperties();
-
- let widgetGroup = CustomizableUI.getWidget("downloads-button");
- let inMenu = widgetGroup.areaType == CustomizableUI.TYPE_MENU_PANEL;
- if (inMenu) {
- if (this._attention == DownloadsCommon.ATTENTION_NONE) {
- AppMenuNotifications.removeNotification(/^download-/);
- } else {
- let badgeClass = "download-" + this._attention;
- AppMenuNotifications.showBadgeOnlyNotification(badgeClass);
- }
- }
-
- this._views.forEach(this._updateView, this);
- },
-
- /**
* Updates the specified view with the current aggregate values.
*
* @param aView
* DownloadsIndicatorView object to be updated.
*/
_updateView(aView) {
aView.hasDownloads = this._hasDownloads;
aView.percentComplete = this._percentComplete;
@@ -1352,29 +1338,16 @@ DownloadsSummaryData.prototype = {
let itemIndex = this._downloads.indexOf(download);
this._downloads.splice(itemIndex, 1);
this._updateViews();
},
// Propagation of properties to our views
/**
- * Computes aggregate values and propagates the changes to our views.
- */
- _updateViews() {
- // Do not update the status indicators during batch loads of download items.
- if (this._loading) {
- return;
- }
-
- this._refreshProperties();
- this._views.forEach(this._updateView, this);
- },
-
- /**
* Updates the specified view with the current aggregate values.
*
* @param aView
* DownloadsIndicatorView object to be updated.
*/
_updateView(aView) {
aView.showingProgress = this._showingProgress;
aView.percentComplete = this._percentComplete;
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -69,47 +69,26 @@
background: #74BF43 url(chrome://browser/skin/update-badge.svg) no-repeat center;
border-radius: 50%;
}
.panel-banner-item[notificationid^=update] {
list-style-image: url(chrome://branding/content/icon16.png);
}
-#PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="fxa-needs-authentication"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
box-shadow: none;
filter: drop-shadow(0 1px 0 hsla(206, 50%, 10%, .15));
}
-#PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
-#PanelUI-menu-button[badge-status="download-severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
- width: 7px;
- height: 7px;
- min-width: 0;
- border-radius: 50%;
- /* "!important" is necessary to override the rule in toolbarbutton.css */
- margin-top: -1px !important;
- margin-right: -2px !important;
-}
-
-#PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
- background: #FFBF00;
-}
-
-#PanelUI-menu-button[badge-status="download-severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
- background: #D90000;
-}
-
#PanelUI-menu-button[badge-status="fxa-needs-authentication"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
height: 13px;
background: transparent url(chrome://browser/skin/warning.svg) no-repeat center;
}
-#PanelUI-menu-button[badge-status="download-warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
#PanelUI-menu-button[badge-status="fxa-needs-authentication"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive {
filter: none;
}
#PanelUI-menu-button[badge-status="addon-alert"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
height: 13px;
background: #FFBF00 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}