Chromium Code Reviews| 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."); |