diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-20 05:16:54 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-20 05:16:54 +0000 |
commit | bf28f5f87c717257ef566e4f7a22d116d088f59e (patch) | |
tree | b6a1cb91e83a23973187116c3aaec3041af27538 /chrome/renderer/resources/extension_process_bindings.js | |
parent | dd3e02abd586bcb898a557713b2636e0f4999990 (diff) | |
download | chromium_src-bf28f5f87c717257ef566e4f7a22d116d088f59e.zip chromium_src-bf28f5f87c717257ef566e4f7a22d116d088f59e.tar.gz chromium_src-bf28f5f87c717257ef566e4f7a22d116d088f59e.tar.bz2 |
Implement chrome.browserAction.setIcon({path:...});
BUG=22575
Review URL: http://codereview.chromium.org/269103
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29495 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources/extension_process_bindings.js')
-rw-r--r-- | chrome/renderer/resources/extension_process_bindings.js | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js index dc81f67..ab5fee3 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; function setIconCommon(details, name, parameters) { if ("iconIndex" in details) { sendRequest(name, [details], parameters); @@ -350,9 +351,32 @@ var chrome = chrome || {}; "The imageData property must contain an ImageData object."); } sendCustomRequest(SetExtensionActionIcon, name, [details], parameters); + } else if ("path" in details) { + if (!canvas_context) { + var canvas = document.createElement("canvas"); + canvas.width = 19; + 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, canvas.width, canvas.height); + canvas_context.drawImage(img, 0, 0, canvas.width, canvas.height); + delete details.path; + details.imageData = canvas_context.getImageData(0, 0, canvas.width, + canvas.height); + sendCustomRequest(SetExtensionActionIcon, name, [details], parameters); + } + img.src = details.path; } else { throw new Error( - "Either the iconIndex or imageData property must be specified."); + "Either the path or imageData property must be specified."); } } |