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

Unified Diff: chrome/renderer/extensions/set_icon_natives.cc

Issue 10855154: Update browserAction.setIcon and pageAction.setIcon for hidpi (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 3 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
« no previous file with comments | « chrome/renderer/extensions/set_icon_natives.h ('k') | chrome/renderer/resources/extensions/set_icon.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..0bdaf18937292e2699ca8fff6b263a6677f7ccd9 100644
--- a/chrome/renderer/extensions/set_icon_natives.cc
+++ b/chrome/renderer/extensions/set_icon_natives.cc
@@ -4,11 +4,18 @@
#include "chrome/renderer/extensions/set_icon_natives.h"
+#include "base/memory/scoped_ptr.h"
#include "chrome/common/render_messages.h"
#include "chrome/renderer/extensions/request_sender.h"
#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 +27,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 +63,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("imageData"))->ToObject();
+
+ DCHECK(bitmap_set_value);
+ 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))
+ scoped_ptr<DictionaryValue> bitmap_set_value(new DictionaryValue());
+ if (!ConvertImageDataSetToBitmapValueSet(args, bitmap_set_value.get()))
return v8::Undefined();
v8::Local<v8::Object> extension_args = args[1]->ToObject();
@@ -72,7 +96,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("imageData", bitmap_set_value.release());
if (details->Has(v8::String::New("tabId"))) {
dict->SetInteger("tabId",
« no previous file with comments | « chrome/renderer/extensions/set_icon_natives.h ('k') | chrome/renderer/resources/extensions/set_icon.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698