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

Unified Diff: extensions/renderer/set_icon_natives.cc

Issue 477193003: Refactor setIcon to allow for more general use of imageData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added page action binding, cleaned up setIcon logic Created 6 years, 4 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: extensions/renderer/set_icon_natives.cc
diff --git a/extensions/renderer/set_icon_natives.cc b/extensions/renderer/set_icon_natives.cc
index 192112f1d812215e823bbf4929e716d412b3ebed..353aa2e1ea1ff336c8da55d7b4fe651ccb03de59 100644
--- a/extensions/renderer/set_icon_natives.cc
+++ b/extensions/renderer/set_icon_natives.cc
@@ -6,8 +6,10 @@
#include <limits>
+#include "base/base64.h"
#include "base/memory/scoped_ptr.h"
#include "content/public/common/common_param_traits.h"
+#include "content/public/renderer/v8_value_converter.h"
#include "extensions/renderer/request_sender.h"
#include "extensions/renderer/script_context.h"
#include "ipc/ipc_message_utils.h"
@@ -92,8 +94,11 @@ bool SetIconNatives::ConvertImageDataToBitmapValue(
// Construct the Value object.
IPC::Message bitmap_pickle;
IPC::WriteParam(&bitmap_pickle, bitmap);
- *bitmap_value = base::BinaryValue::CreateWithCopiedBuffer(
- static_cast<const char*>(bitmap_pickle.data()), bitmap_pickle.size());
+ std::string bitmap_data = std::string(reinterpret_cast<const char*>(
+ bitmap_pickle.data()), bitmap_pickle.size());
+ std::string data64;
+ base::Base64Encode(bitmap_data, &data64);
not at google - send to devlin 2014/08/19 17:32:29 Ideally you'd only need to convert to a binary val
gpdavis 2014/08/19 22:05:07 Well, that took a while, but I finally figured out
not at google - send to devlin 2014/08/20 14:42:18 Nice!
+ *bitmap_value = new base::StringValue(data64);
return true;
}
@@ -101,13 +106,10 @@ bool SetIconNatives::ConvertImageDataToBitmapValue(
bool SetIconNatives::ConvertImageDataSetToBitmapValueSet(
const v8::FunctionCallbackInfo<v8::Value>& args,
base::DictionaryValue* bitmap_set_value) {
- v8::Local<v8::Object> extension_args = args[1]->ToObject();
- v8::Local<v8::Object> details =
- extension_args->Get(v8::String::NewFromUtf8(args.GetIsolate(), "0"))
- ->ToObject();
+ v8::Local<v8::Object> details = args[0]->ToObject();
v8::Local<v8::Object> image_data_set =
- details->Get(v8::String::NewFromUtf8(args.GetIsolate(), "imageData"))
- ->ToObject();
+ details->Get(v8::String::NewFromUtf8(
+ args.GetIsolate(), "imageData"))->ToObject();
DCHECK(bitmap_set_value);
for (size_t i = 0; i < arraysize(kImageSizeKeys); i++) {
@@ -133,14 +135,10 @@ void SetIconNatives::SetIconCommon(
if (!ConvertImageDataSetToBitmapValueSet(args, bitmap_set_value.get()))
return;
- v8::Local<v8::Object> extension_args = args[1]->ToObject();
- v8::Local<v8::Object> details =
- extension_args->Get(v8::String::NewFromUtf8(args.GetIsolate(), "0"))
- ->ToObject();
+ v8::Local<v8::Object> details = args[0]->ToObject();
base::DictionaryValue* dict = new base::DictionaryValue();
not at google - send to devlin 2014/08/19 17:32:29 This now leaks |dict| since it's not having its ow
gpdavis 2014/08/19 22:05:07 Ah, gotcha. Nice catch!
dict->Set("imageData", bitmap_set_value.release());
-
if (details->Has(v8::String::NewFromUtf8(args.GetIsolate(), "tabId"))) {
dict->SetInteger(
"tabId",
@@ -148,16 +146,12 @@ void SetIconNatives::SetIconCommon(
->Int32Value());
}
- base::ListValue list_value;
- list_value.Append(dict);
-
- std::string name = *v8::String::Utf8Value(args[0]);
- int request_id = args[2]->Int32Value();
- bool has_callback = args[3]->BooleanValue();
- bool for_io_thread = args[4]->BooleanValue();
-
- request_sender_->StartRequest(
- context(), name, request_id, has_callback, for_io_thread, &list_value);
+ v8::Isolate* isolate = context()->v8_context()->GetIsolate();
+ v8::Handle<v8::Value> result = v8::Object::New(isolate);
+ scoped_ptr<content::V8ValueConverter> converter(
+ content::V8ValueConverter::create());
+ result = converter->ToV8Value(dict, context()->v8_context());
+ args.GetReturnValue().Set(result);
}
} // namespace extensions
« extensions/renderer/resources/set_icon.js ('K') | « extensions/renderer/resources/set_icon.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698