Index: chrome/renderer/resources/extension_process_bindings.js |
diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js |
index 29416441f174ddfccf52abb5d8cd9a6695f230aa..110147e8ae2cdd17ad15a2868b201e007fd10127 100644 |
--- a/chrome/renderer/resources/extension_process_bindings.js |
+++ b/chrome/renderer/resources/extension_process_bindings.js |
@@ -333,6 +333,7 @@ var chrome = chrome || {}; |
return GetL10nMessage(message_name, placeholders); |
} |
+ var canvas_context; |
apiFunctions["browserAction.setIcon"].handleRequest = function(details) { |
if ("iconIndex" in details) { |
sendRequest(this.name, arguments, this.definition.parameters); |
@@ -352,6 +353,30 @@ var chrome = chrome || {}; |
sendCustomRequest(SetBrowserActionIcon, "browserAction.setIcon", |
details, this.definition.parameters); |
+ } else if ("path" in details) { |
+ if (!canvas_context) { |
+ var canvas = document.createElement("canvas"); |
+ canvas.width = 19; |
Matt Perry
2009/10/16 19:06:05
isn't it 21 now?
|
+ canvas.height = 19; |
+ canvas_context = canvas.getContext('2d'); |
+ } |
+ |
+ var img = new Image(); |
+ var self = this; |
+ img.onerror = function() { |
+ console.error("Could not load browser action icon '" + details.path + |
+ "'."); |
+ } |
+ img.onload = function() { |
+ canvas_context.clearRect(0, 0, context.width, context.height); |
+ canvas_context.drawImage(img, 0, 0, context.width, context.height); |
+ delete details.path; |
+ details.imageData = canvas_context.getImageData(0, 0, context.width, |
+ context.height); |
+ sendCustomRequest(SetBrowserActionIcon, "browserAction.setIcon", |
+ details, self.definition.parameters); |
+ } |
+ img.src = details.path; |
} else { |
throw new Error( |
"Either the iconIndex or imageData property must be specified."); |