Index: ext/background.js |
=================================================================== |
--- a/ext/background.js |
+++ b/ext/background.js |
@@ -326,35 +326,41 @@ |
// Firefox for Android displays the browser action not as an icon but |
// as a menu item. There is no icon, but such an option may be added |
// in the future. |
// https://bugzilla.mozilla.org/show_bug.cgi?id=1331746 |
if (change == "iconPath" && "setIcon" in browser.browserAction) |
{ |
let path = { |
16: this._changes.iconPath.replace("$size", "16"), |
- 19: this._changes.iconPath.replace("$size", "19"), |
20: this._changes.iconPath.replace("$size", "20"), |
32: this._changes.iconPath.replace("$size", "32"), |
- 38: this._changes.iconPath.replace("$size", "38"), |
40: this._changes.iconPath.replace("$size", "40") |
}; |
try |
{ |
return browser.browserAction.setIcon({tabId: this._tabId, path}); |
} |
catch (e) |
{ |
// Edge throws if passed icon sizes different than 19,20,38,40px. |
delete path[16]; |
delete path[32]; |
return browser.browserAction.setIcon({tabId: this._tabId, path}); |
} |
} |
+ if (change == "iconImageData" && "setIcon" in browser.browserAction) |
+ { |
+ return browser.browserAction.setIcon({ |
+ tabId: this._tabId, |
+ imageData: this._changes.iconImageData |
+ }); |
+ } |
+ |
// There is no badge on Firefox for Android; the browser action is |
// simply a menu item. |
if (change == "badgeText" && "setBadgeText" in browser.browserAction) |
return browser.browserAction.setBadgeText({ |
tabId: this._tabId, |
text: this._changes.badgeText |
}); |
@@ -394,19 +400,23 @@ |
{ |
// If the tab is prerendered, browser.browserAction.set* fails |
// and we have to delay our changes until the currently visible tab |
// is replaced with the prerendered tab. |
browser.tabs.onReplaced.addListener(onReplaced); |
}); |
} |
}, |
- setIcon(path) |
+ setIcon(path, imageData = null) |
{ |
- this._addChange("iconPath", path); |
+ // Use ImageData if available. |
+ if (imageData) |
+ this._addChange("iconImageData", imageData); |
+ else |
+ this._addChange("iconPath", path); |
}, |
setBadge(badge) |
{ |
if (!badge) |
{ |
this._addChange("badgeText", ""); |
} |
else |