Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9795)

Unified Diff: chrome/renderer/resources/extension_process_bindings.js

Issue 269103: Implement chrome.browserAction.setIcon({path:...}); (Closed)
Patch Set: Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.");
« no previous file with comments | « chrome/common/extensions/api/extension_api.json ('k') | chrome/test/data/extensions/samples/set_icon_path/background.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698