| Index: chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| index 8b2ed3f19c55e1e2622b52552a3910a376a0d394..73ef15630e45ce105811da543ba0a08294d286dc 100644
|
| --- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| +++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| @@ -671,14 +671,17 @@ bool ExtensionActionSetIconFunction::RunExtensionAction() {
|
| // setIcon can take a variant argument: either a dictionary of canvas
|
| // ImageData, or an icon index.
|
| base::DictionaryValue* canvas_set = NULL;
|
| - int icon_index;
|
| if (details_->GetDictionary("imageData", &canvas_set)) {
|
| gfx::ImageSkia icon;
|
| // Extract icon representations from the ImageDataSet dictionary.
|
| for (size_t i = 0; i < arraysize(kIconSizes); i++) {
|
| - base::BinaryValue* binary;
|
| - if (canvas_set->GetBinary(kIconSizes[i].size_string, &binary)) {
|
| - IPC::Message pickle(binary->GetBuffer(), binary->GetSize());
|
| + std::string binary_string64;
|
| + if (canvas_set->GetString(kIconSizes[i].size_string, &binary_string64)) {
|
| + std::string binary_data;
|
| + if (!base::Base64Decode(binary_string64, &binary_data))
|
| + return false;
|
| +
|
| + IPC::Message pickle(binary_data.c_str(), binary_data.length());
|
| PickleIterator iter(pickle);
|
| SkBitmap bitmap;
|
| EXTENSION_FUNCTION_VALIDATE(IPC::ReadParam(&pickle, &iter, &bitmap));
|
| @@ -689,7 +692,7 @@ bool ExtensionActionSetIconFunction::RunExtensionAction() {
|
| }
|
|
|
| extension_action_->SetIcon(tab_id_, gfx::Image(icon));
|
| - } else if (details_->GetInteger("iconIndex", &icon_index)) {
|
| + } else if (details_->HasKey("iconIndex")) {
|
| // Obsolete argument: ignore it.
|
| return true;
|
| } else {
|
|
|