Chromium Code Reviews| Index: chrome/renderer/extensions/set_icon_natives.cc |
| diff --git a/chrome/renderer/extensions/set_icon_natives.cc b/chrome/renderer/extensions/set_icon_natives.cc |
| index e9df10bf05a0a62bc05ef89ecc9d08b8101f1f19..a645c03c217db9c80f2cbcf65e3f3f5f115c3934 100644 |
| --- a/chrome/renderer/extensions/set_icon_natives.cc |
| +++ b/chrome/renderer/extensions/set_icon_natives.cc |
| @@ -9,6 +9,12 @@ |
| #include "third_party/skia/include/core/SkBitmap.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| +namespace { |
| + |
| +const char* kImageSizeKeys[] = { "19", "38" }; |
| + |
| +} // namespace |
| + |
| namespace extensions { |
| SetIconNatives::SetIconNatives(Dispatcher* dispatcher, |
| @@ -20,12 +26,7 @@ SetIconNatives::SetIconNatives(Dispatcher* dispatcher, |
| } |
| bool SetIconNatives::ConvertImageDataToBitmapValue( |
| - const v8::Arguments& args, Value** bitmap_value) { |
| - v8::Local<v8::Object> extension_args = args[1]->ToObject(); |
| - v8::Local<v8::Object> details = |
| - extension_args->Get(v8::String::New("0"))->ToObject(); |
| - v8::Local<v8::Object> image_data = |
| - details->Get(v8::String::New("imageData"))->ToObject(); |
| + const v8::Local<v8::Object> image_data, Value** bitmap_value) { |
| v8::Local<v8::Object> data = |
| image_data->Get(v8::String::New("data"))->ToObject(); |
| int width = image_data->Get(v8::String::New("width"))->Int32Value(); |
| @@ -61,10 +62,32 @@ bool SetIconNatives::ConvertImageDataToBitmapValue( |
| return true; |
| } |
| +bool SetIconNatives::ConvertImageDataSetToBitmapValueSet( |
| + const v8::Arguments& args, DictionaryValue** bitmap_set_value) { |
| + v8::Local<v8::Object> extension_args = args[1]->ToObject(); |
| + v8::Local<v8::Object> details = |
| + extension_args->Get(v8::String::New("0"))->ToObject(); |
| + v8::Local<v8::Object> image_data_set = |
| + details->Get(v8::String::New("imageDataSet"))->ToObject(); |
| + |
| + *bitmap_set_value = new DictionaryValue(); |
|
Jeffrey Yasskin
2012/08/17 23:20:28
This will be a memory leak if the function returns
tbarzic
2012/08/21 00:22:07
Done.
|
| + for (size_t i = 0; i < arraysize(kImageSizeKeys); i++) { |
| + if (!image_data_set->Has(v8::String::New(kImageSizeKeys[i]))) |
| + continue; |
| + v8::Local<v8::Object> image_data = |
| + image_data_set->Get(v8::String::New(kImageSizeKeys[i]))->ToObject(); |
| + Value* image_data_bitmap = NULL; |
| + if (!ConvertImageDataToBitmapValue(image_data, &image_data_bitmap)) |
| + return false; |
| + (*bitmap_set_value)->Set(kImageSizeKeys[i], image_data_bitmap); |
| + } |
| + return true; |
| +} |
| + |
| v8::Handle<v8::Value> SetIconNatives::SetIconCommon( |
| const v8::Arguments& args) { |
| - Value* bitmap_value = NULL; |
| - if (!ConvertImageDataToBitmapValue(args, &bitmap_value)) |
| + DictionaryValue* bitmap_set_value = NULL; |
| + if (!ConvertImageDataSetToBitmapValueSet(args, &bitmap_set_value)) |
| return v8::Undefined(); |
| v8::Local<v8::Object> extension_args = args[1]->ToObject(); |
| @@ -72,7 +95,7 @@ v8::Handle<v8::Value> SetIconNatives::SetIconCommon( |
| extension_args->Get(v8::String::New("0"))->ToObject(); |
| DictionaryValue* dict = new DictionaryValue(); |
| - dict->Set("imageData", bitmap_value); |
| + dict->Set("imageDataSet", bitmap_set_value); |
| if (details->Has(v8::String::New("tabId"))) { |
| dict->SetInteger("tabId", |