Index: chrome/ext/background.js |
diff --git a/chrome/ext/background.js b/chrome/ext/background.js |
index fe0cd37f2fa1b68ff83ab00a5ab9a4f46811777b..810e7650c08d123c66210f317422b38b69acc895 100644 |
--- a/chrome/ext/background.js |
+++ b/chrome/ext/background.js |
@@ -176,11 +176,38 @@ |
this._changes = null; |
}; |
BrowserAction.prototype = { |
+ _legacySetIcon: function(details) |
+ { |
+ var legacyDetails = {}; |
+ for (var key in details) |
+ { |
+ var value = details[key]; |
+ if (typeof value == "object") |
+ value = {19: value[19], 38: value[38]}; |
+ legacyDetails[key] = value; |
+ } |
+ chrome.browserAction.setIcon(legacyDetails); |
+ }, |
+ _safeSetIcon: function(details) |
+ { |
+ try |
+ { |
+ chrome.browserAction.setIcon(details); |
+ } |
+ catch (e) |
+ { |
+ // Older versions of Chrome do not allow any sizes other than 19 and 38 |
+ // to be present, but newer versions of Chrome (and Edge) prefer |
+ // different sizes. |
+ this._safeSetIcon = this._legacySetIcon; |
+ this._legacySetIcon(details); |
+ } |
+ }, |
_applyChanges: function() |
{ |
if ("iconPath" in this._changes) |
{ |
- chrome.browserAction.setIcon({ |
+ this._safeSetIcon({ |
tabId: this._tabId, |
path: { |
16: this._changes.iconPath.replace("$size", "16"), |