diff --git a/browser/components/downloads/content/download.xml b/browser/components/downloads/content/download.xml
index b825ae3b0e0f..16c2e9bb67c4 100644
--- a/browser/components/downloads/content/download.xml
+++ b/browser/components/downloads/content/download.xml
@@ -55,6 +55,28 @@
+
+
+
+
+
+
+
diff --git a/browser/components/downloads/content/downloads.js b/browser/components/downloads/content/downloads.js
index ed2f0ca5777c..afca61891f0f 100644
--- a/browser/components/downloads/content/downloads.js
+++ b/browser/components/downloads/content/downloads.js
@@ -1037,6 +1037,16 @@ const DownloadsView = {
* Mouse listeners to handle selection on hover.
*/
onDownloadMouseOver(aEvent) {
+ if (aEvent.originalTarget.classList.contains("downloadButton")) {
+ aEvent.target.classList.add("downloadHoveringButton");
+
+ let button = aEvent.originalTarget;
+ let tooltip = button.getAttribute("tooltiptext");
+ if (tooltip) {
+ button.setAttribute("aria-label", tooltip);
+ button.removeAttribute("tooltiptext");
+ }
+ }
if (!(this.contextMenuOpen || this.subViewOpen) &&
aEvent.target.parentNode == this.richListBox) {
this.richListBox.selectedItem = aEvent.target;
@@ -1044,6 +1054,9 @@ const DownloadsView = {
},
onDownloadMouseOut(aEvent) {
+ if (aEvent.originalTarget.classList.contains("downloadButton")) {
+ aEvent.target.classList.remove("downloadHoveringButton");
+ }
if (!(this.contextMenuOpen || this.subViewOpen) &&
aEvent.target.parentNode == this.richListBox) {
// If the destination element is outside of the richlistitem, clear the
diff --git a/browser/locales/en-US/chrome/browser/downloads/downloads.dtd b/browser/locales/en-US/chrome/browser/downloads/downloads.dtd
index 6d5ebfdc4831..d749fdc0ef23 100644
--- a/browser/locales/en-US/chrome/browser/downloads/downloads.dtd
+++ b/browser/locales/en-US/chrome/browser/downloads/downloads.dtd
@@ -89,6 +89,30 @@
-->
+
+
+
+
+
+
+
+
+
+
+
+