Bug 1270014 - Show an alert icon on the downloads button when a download fails r=paolo
Add ATTENTION_FAILED.
MozReview-Commit-ID: Lezri5FbPyS
--- a/browser/base/content/test/general/browser_menuButtonBadgeManager.js
+++ b/browser/base/content/test/general/browser_menuButtonBadgeManager.js
@@ -18,18 +18,21 @@ add_task(function* testButtonActivities(
is(menuButton.getAttribute("badge-status"), "update-failed", "Should have update-failed badge status");
gMenuButtonBadgeManager.addBadge(gMenuButtonBadgeManager.BADGEID_DOWNLOAD, "download-severe");
is(menuButton.getAttribute("badge-status"), "download-severe", "Should have download-severe badge status");
gMenuButtonBadgeManager.addBadge(gMenuButtonBadgeManager.BADGEID_DOWNLOAD, "download-warning");
is(menuButton.getAttribute("badge-status"), "download-warning", "Should have download-warning badge status");
+ gMenuButtonBadgeManager.addBadge(gMenuButtonBadgeManager.BADGEID_DOWNLOAD, "download-failed");
+ is(menuButton.getAttribute("badge-status"), "download-failed", "Should have download-failed badge status");
+
gMenuButtonBadgeManager.addBadge("unknownbadge", "attr");
- is(menuButton.getAttribute("badge-status"), "download-warning", "Should not have changed badge status");
+ is(menuButton.getAttribute("badge-status"), "download-failed", "Should not have changed badge status");
gMenuButtonBadgeManager.removeBadge(gMenuButtonBadgeManager.BADGEID_DOWNLOAD);
is(menuButton.getAttribute("badge-status"), "update-failed", "Should have update-failed badge status");
gMenuButtonBadgeManager.removeBadge(gMenuButtonBadgeManager.BADGEID_APPUPDATE);
is(menuButton.getAttribute("badge-status"), "fxa-needs-authentication", "Should have fxa-needs-authentication badge status");
gMenuButtonBadgeManager.removeBadge(gMenuButtonBadgeManager.BADGEID_FXA);
--- a/browser/components/downloads/DownloadsCommon.jsm
+++ b/browser/components/downloads/DownloadsCommon.jsm
@@ -139,16 +139,17 @@ PrefObserver.register({
* This object is exposed directly to the consumers of this JavaScript module,
* and provides shared methods for all the instances of the user interface.
*/
this.DownloadsCommon = {
ATTENTION_NONE: "",
ATTENTION_SUCCESS: "success",
ATTENTION_WARNING: "warning",
ATTENTION_SEVERE: "severe",
+ ATTENTION_FAILED: "failed",
/**
* Returns an object whose keys are the string names from the downloads string
* bundle, and whose values are either the translated strings or functions
* returning formatted strings.
*/
get strings() {
let strings = {};
@@ -1170,16 +1171,18 @@ DownloadsIndicatorDataCtor.prototype = {
case Downloads.Error.BLOCK_VERDICT_MALWARE:
this.attention = DownloadsCommon.ATTENTION_SEVERE;
break;
default:
this.attention = DownloadsCommon.ATTENTION_SEVERE;
Cu.reportError("Unknown reputation verdict: " +
download.error.reputationCheckVerdict);
}
+ } else if (download.error && !download.error.reputationCheckVerdict) {
+ this.attention = DownloadsCommon.ATTENTION_FAILED;
} else if (download.succeeded || download.error) {
// Existing higher level attention indication trumps ATTENTION_SUCCESS.
if (this._attention != DownloadsCommon.ATTENTION_SEVERE &&
this._attention != DownloadsCommon.ATTENTION_WARNING) {
this.attention = DownloadsCommon.ATTENTION_SUCCESS;
}
}
--- a/browser/themes/linux/downloads/indicator.css
+++ b/browser/themes/linux/downloads/indicator.css
@@ -27,27 +27,29 @@
}
toolbar[brighttext] #downloads-button[cui-areatype="toolbar"]:not([attention="success"]) > #downloads-indicator-anchor > #downloads-indicator-icon {
background: -moz-image-rect(url("chrome://browser/skin/Toolbar-inverted.png"),
0, 198, 18, 180) center no-repeat;
}
#downloads-button[cui-areatype="toolbar"][attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
-#downloads-button[cui-areatype="toolbar"][attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
+#downloads-button[cui-areatype="toolbar"][attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#downloads-button[cui-areatype="toolbar"][attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
display: -moz-box;
height: 13px;
width: 13px;
background-size: contain;
border: none;
box-shadow: none;
filter: drop-shadow(0 1px 0 hsla(206, 50%, 10%, .15));
}
-#downloads-button[cui-areatype="toolbar"][attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
+#downloads-button[cui-areatype="toolbar"][attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#downloads-button[cui-areatype="toolbar"][attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #D90000 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}
#downloads-button[cui-areatype="toolbar"][attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #FFBF00 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}
#downloads-button[cui-areatype="toolbar"][attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
--- a/browser/themes/osx/downloads/indicator.css
+++ b/browser/themes/osx/downloads/indicator.css
@@ -29,36 +29,39 @@
0, 198, 18, 180) center no-repeat;
}
toolbar[brighttext] #downloads-indicator-icon {
background-image: -moz-image-rect(url("chrome://browser/skin/Toolbar-inverted.png"), 0, 198, 18, 180);
}
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
-#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
+#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#downloads-button[attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
display: -moz-box;
height: 13px;
width: 13px;
background-size: contain;
border: none;
box-shadow: none;
filter: drop-shadow(0 1px 0 hsla(206, 50%, 10%, .15));
}
-#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
+#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#downloads-button[attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #D90000 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #FFBF00 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}
#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
-#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive {
+#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
+#downloads-button[attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive {
filter: none;
}
#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon {
background-image: -moz-image-rect(url("chrome://browser/skin/Toolbar.png"), 36, 198, 54, 180);
}
toolbar[brighttext] #downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon {
--- a/browser/themes/shared/customizableui/panelUIOverlay.inc.css
+++ b/browser/themes/shared/customizableui/panelUIOverlay.inc.css
@@ -111,16 +111,17 @@
}
#PanelUI-menu-button[badge-status="update-succeeded"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #74BF43 url(chrome://browser/skin/update-badge.svg) no-repeat center;
height: 13px;
}
#PanelUI-menu-button[badge-status="download-severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#PanelUI-menu-button[badge-status="download-failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="update-failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #D90000 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
height: 13px;
}
#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 {
height: 13px;
--- a/browser/themes/windows/downloads/indicator.css
+++ b/browser/themes/windows/downloads/indicator.css
@@ -44,36 +44,39 @@
background-size: 18px;
}
toolbar[brighttext] #downloads-button:not([attention="success"]) > #downloads-indicator-anchor > #downloads-indicator-icon {
background-image: var(--downloads-indicator-icon-inverted);
}
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
-#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
+#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#downloads-button[attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
display: -moz-box;
height: 13px;
width: 13px;
background-size: contain;
border: none;
box-shadow: none;
filter: drop-shadow(0 1px 0 hsla(206, 50%, 10%, .15));
}
-#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
+#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#downloads-button[attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #D90000 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #FFBF00 url(chrome://browser/skin/update-badge-failed.svg) no-repeat center;
}
#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
-#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive {
+#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
+#downloads-button[attention="failed"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive {
filter: none;
}
#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon {
background-image: var(--downloads-indicator-icon-attention);
}
toolbar[brighttext] #downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon {