summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources/extension_process_bindings.js
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-20 05:16:54 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-20 05:16:54 +0000
commitbf28f5f87c717257ef566e4f7a22d116d088f59e (patch)
treeb6a1cb91e83a23973187116c3aaec3041af27538 /chrome/renderer/resources/extension_process_bindings.js
parentdd3e02abd586bcb898a557713b2636e0f4999990 (diff)
downloadchromium_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.js26
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.");
}
}