Bug 1198181 - Part 4 - Differentiate the icons for blocked downloads depending on the verdict. r=past
MozReview-Commit-ID: 1wvRJdJ3NhM
--- a/browser/components/downloads/DownloadsViewUI.jsm
+++ b/browser/components/downloads/DownloadsViewUI.jsm
@@ -12,16 +12,18 @@
this.EXPORTED_SYMBOLS = [
"DownloadsViewUI",
];
const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "Downloads",
+ "resource://gre/modules/Downloads.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "DownloadUtils",
"resource://gre/modules/DownloadUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "DownloadsCommon",
"resource:///modules/DownloadsCommon.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "OS",
"resource://gre/modules/osfile.jsm");
this.DownloadsViewUI = {
@@ -228,17 +230,27 @@ this.DownloadsViewUI.DownloadElementShel
// History downloads may not have a size defined.
stateLabel = s.sizeUnknown;
}
} else if (this.download.canceled) {
stateLabel = s.stateCanceled;
} else if (this.download.error.becauseBlockedByParentalControls) {
stateLabel = s.stateBlockedParentalControls;
} else if (this.download.error.becauseBlockedByReputationCheck) {
- stateLabel = s.stateDirty;
+ switch (this.download.error.reputationCheckVerdict) {
+ case Downloads.Error.BLOCK_VERDICT_UNCOMMON:
+ stateLabel = s.blockedUncommon;
+ break;
+ case Downloads.Error.BLOCK_VERDICT_POTENTIALLY_UNWANTED:
+ stateLabel = s.blockedPotentiallyUnwanted;
+ break;
+ default: // Assume Downloads.Error.BLOCK_VERDICT_MALWARE
+ stateLabel = s.blockedMalware;
+ break;
+ }
} else {
stateLabel = s.stateFailed;
}
let referrer = this.download.source.referrer || this.download.source.url;
let [displayHost, fullHost] = DownloadUtils.getURIHost(referrer);
let date = new Date(this.download.endTime);
--- a/browser/themes/linux/downloads/allDownloadsViewOverlay.css
+++ b/browser/themes/linux/downloads/allDownloadsViewOverlay.css
@@ -9,16 +9,24 @@
:root {
--downloads-item-height: 5em;
}
.blockedIcon {
list-style-image: url("moz-icon://stock/gtk-dialog-error?size=dialog");
}
+@item@[verdict="PotentiallyUnwanted"] .blockedIcon {
+ list-style-image: url("moz-icon://stock/gtk-dialog-warning?size=dialog");
+}
+
+@item@[verdict="Uncommon"] .blockedIcon {
+ list-style-image: url("moz-icon://stock/gtk-dialog-info?size=dialog");
+}
+
/*** Button icons ***/
.downloadButton.downloadIconCancel {
-moz-image-region: rect(0px, 16px, 16px, 0px);
}
@item@:hover .downloadButton.downloadIconCancel {
-moz-image-region: rect(0px, 32px, 16px, 16px);
}
--- a/browser/themes/linux/downloads/downloads.css
+++ b/browser/themes/linux/downloads/downloads.css
@@ -32,17 +32,25 @@
--downloads-item-border-bottom-color: hsla(0,0%,0%,.15);
--downloads-item-font-size-factor: 0.9;
--downloads-item-target-margin-bottom: 7px;
--downloads-item-details-margin-top: 1px;
--downloads-item-details-opacity: 0.6;
}
.blockedIcon {
- list-style-image: url("moz-icon://stock/gtk-dialog-error?size=dialog");
+ list-style-image: url("moz-icon://stock/gtk-dialog-error?size=32");
+}
+
+@item@[verdict="PotentiallyUnwanted"] .blockedIcon {
+ list-style-image: url("moz-icon://stock/gtk-dialog-warning?size=32");
+}
+
+@item@[verdict="Uncommon"] .blockedIcon {
+ list-style-image: url("moz-icon://stock/gtk-dialog-info?size=32");
}
.downloadButton:focus > .button-box {
outline: 1px -moz-dialogtext dotted;
}
/*** Highlighted list items ***/
--- a/browser/themes/osx/downloads/allDownloadsViewOverlay.css
+++ b/browser/themes/osx/downloads/allDownloadsViewOverlay.css
@@ -5,16 +5,24 @@
%include ../../shared/downloads/allDownloadsViewOverlay.inc.css
/*** List items ***/
:root {
--downloads-item-height: 6em;
}
+@item@[verdict="PotentiallyUnwanted"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/warning-32.png");
+}
+
+@item@[verdict="Uncommon"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/information-32.png");
+}
+
/*** Button icons ***/
.downloadButton.downloadIconCancel {
-moz-image-region: rect(0px, 16px, 16px, 0px);
}
@item@:hover .downloadButton.downloadIconCancel {
-moz-image-region: rect(0px, 32px, 16px, 16px);
}
--- a/browser/themes/osx/downloads/downloads.css
+++ b/browser/themes/osx/downloads/downloads.css
@@ -42,16 +42,24 @@
--downloads-item-details-opacity: 0.7;
}
.downloadButton:focus > .button-box {
outline: 2px -moz-mac-focusring solid;
outline-offset: -2px;
}
+@item@[verdict="PotentiallyUnwanted"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/warning-32.png");
+}
+
+@item@[verdict="Uncommon"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/information-32.png");
+}
+
/*** Highlighted list items ***/
@keyfocus@ @itemFocused@,
@notKeyfocus@ @itemFinished@[exists]:hover {
border-radius: 3px;
border-top: 1px solid hsla(0,0%,100%,.2);
border-bottom: 1px solid hsla(0,0%,0%,.4);
background-color: Highlight;
--- a/browser/themes/windows/downloads/allDownloadsViewOverlay.css
+++ b/browser/themes/windows/downloads/allDownloadsViewOverlay.css
@@ -5,16 +5,24 @@
%include ../../shared/downloads/allDownloadsViewOverlay.inc.css
/*** List items ***/
:root {
--downloads-item-height: 6em;
}
+@item@[verdict="PotentiallyUnwanted"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/Warning.png");
+}
+
+@item@[verdict="Uncommon"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/information-32.png");
+}
+
/*** Highlighted list items ***/
@media not all and (-moz-os-version: windows-xp) {
@media (-moz-windows-default-theme) {
/*
-moz-appearance: menuitem is almost right, but the hover effect is not
transparent and is lighter than desired.
--- a/browser/themes/windows/downloads/downloads.css
+++ b/browser/themes/windows/downloads/downloads.css
@@ -91,16 +91,24 @@
.downloadButton > .button-box {
border: 1px solid transparent;
}
@keyfocus@ .downloadButton:focus > .button-box {
border: 1px dotted ThreeDDarkShadow;
}
+@item@[verdict="PotentiallyUnwanted"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/Warning.png");
+}
+
+@item@[verdict="Uncommon"] .blockedIcon {
+ list-style-image: url("chrome://global/skin/icons/information-32.png");
+}
+
/*** Highlighted list items ***/
@keyfocus@ @itemFocused@ {
outline: 1px -moz-dialogtext dotted;
outline-offset: -1px;
}
@notKeyfocus@ @itemFinished@[exists]:hover {