Commit 47611daa authored by aa@chromium.org's avatar aa@chromium.org

Limit chrome.(browser|page)Action.setIcon({imageData:...}) to

a max of 19px square.

BUG=25626

Review URL: http://codereview.chromium.org/342012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30327 0039d316-1c4b-4281-b951-d872f2087c98
parent 1d1dc679
...@@ -352,6 +352,8 @@ var chrome = chrome || {}; ...@@ -352,6 +352,8 @@ var chrome = chrome || {};
var canvas; var canvas;
function setIconCommon(details, name, parameters) { function setIconCommon(details, name, parameters) {
var EXTENSION_ACTION_ICON_SIZE = 19;
if ("iconIndex" in details) { if ("iconIndex" in details) {
sendRequest(name, [details], parameters); sendRequest(name, [details], parameters);
} else if ("imageData" in details) { } else if ("imageData" in details) {
...@@ -367,6 +369,14 @@ var chrome = chrome || {}; ...@@ -367,6 +369,14 @@ var chrome = chrome || {};
throw new Error( throw new Error(
"The imageData property must contain an ImageData object."); "The imageData property must contain an ImageData object.");
} }
if (details.imageData.width > EXTENSION_ACTION_ICON_SIZE ||
details.imageData.height > EXTENSION_ACTION_ICON_SIZE) {
throw new Error(
"The imageData property must contain an ImageData object that " +
"is no larger than 19 pixels square.");
}
sendCustomRequest(SetExtensionActionIcon, name, [details], parameters); sendCustomRequest(SetExtensionActionIcon, name, [details], parameters);
} else if ("path" in details) { } else if ("path" in details) {
var img = new Image(); var img = new Image();
...@@ -376,8 +386,10 @@ var chrome = chrome || {}; ...@@ -376,8 +386,10 @@ var chrome = chrome || {};
} }
img.onload = function() { img.onload = function() {
var canvas = document.createElement("canvas"); var canvas = document.createElement("canvas");
canvas.width = img.width > 19 ? 19 : img.width; canvas.width = img.width > EXTENSION_ACTION_ICON_SIZE ?
canvas.height = img.height > 19 ? 19 : img.height; EXTENSION_ACTION_ICON_SIZE : img.width;
canvas.height = img.height > EXTENSION_ACTION_ICON_SIZE ?
EXTENSION_ACTION_ICON_SIZE : img.height;
var canvas_context = canvas.getContext('2d'); var canvas_context = canvas.getContext('2d');
canvas_context.clearRect(0, 0, canvas.width, canvas.height); canvas_context.clearRect(0, 0, canvas.width, canvas.height);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment