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

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

Issue 10161038: Allow serialization of ArrayBuffer params in extension/apps API methods (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes for review feedback and browser test failures Created 8 years, 8 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: chrome/renderer/extensions/send_request_natives.cc
diff --git a/chrome/renderer/extensions/send_request_natives.cc b/chrome/renderer/extensions/send_request_natives.cc
index e5377ce30f5e3adbfe8c845847fcbbfd6d9e0d61..17e0ba995ade2e7239de66a92c9b399532f05e0f 100644
--- a/chrome/renderer/extensions/send_request_natives.cc
+++ b/chrome/renderer/extensions/send_request_natives.cc
@@ -5,8 +5,11 @@
#include "chrome/renderer/extensions/send_request_natives.h"
#include "base/json/json_reader.h"
+#include "content/public/renderer/v8_value_converter.h"
#include "chrome/renderer/extensions/extension_request_sender.h"
+using content::V8ValueConverter;
+
namespace extensions {
SendRequestNatives::SendRequestNatives(
@@ -32,21 +35,19 @@ v8::Handle<v8::Value> SendRequestNatives::GetNextRequestId(
// callback will be dispatched to EventBindings::HandleResponse.
v8::Handle<v8::Value> SendRequestNatives::StartRequest(
const v8::Arguments& args) {
- std::string str_args = *v8::String::Utf8Value(args[1]);
- scoped_ptr<Value> value_args(base::JSONReader::Read(str_args));
-
- // Since we do the serialization in the v8 extension, we should always get
- // valid JSON.
- if (!value_args.get() || !value_args->IsType(Value::TYPE_LIST)) {
- NOTREACHED() << "Invalid JSON passed to StartRequest.";
- return v8::Undefined();
- }
-
std::string name = *v8::String::AsciiValue(args[0]);
int request_id = args[2]->Int32Value();
bool has_callback = args[3]->BooleanValue();
bool for_io_thread = args[4]->BooleanValue();
+ scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
+ scoped_ptr<Value> value_args(
+ converter->FromV8Value(args[1], v8::Context::GetCurrent()));
+ if (!value_args.get() || !value_args->IsType(Value::TYPE_LIST)) {
+ NOTREACHED() << "Unable to convert args passed to StartRequest";
+ return v8::Undefined();
+ }
+
request_sender_->StartRequest(name, request_id, has_callback, for_io_thread,
static_cast<ListValue*>(value_args.get()));
return v8::Undefined();

Powered by Google App Engine
This is Rietveld 408576698