diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-06 20:22:48 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-06 20:22:48 +0000 |
commit | 6c477f46baacb4b73e3972d2f2f322dcbe8a2cb5 (patch) | |
tree | fe911c9cb618b34b47f3eec0b5835ed902c22223 /chrome/renderer/extensions | |
parent | d4d0846deecc5b86df52f75be6d4e49f44ce499a (diff) | |
download | chromium_src-6c477f46baacb4b73e3972d2f2f322dcbe8a2cb5.zip chromium_src-6c477f46baacb4b73e3972d2f2f322dcbe8a2cb5.tar.gz chromium_src-6c477f46baacb4b73e3972d2f2f322dcbe8a2cb5.tar.bz2 |
Allow serialization of ArrayBuffer params in extension/apps API methods
This changes the V8ValueConverter to do ArrayBuffer<->BinaryValue conversions,
as well as supporting ArrayBufferView subclasses as request parameters (but
not response ones, since that's unnecessary).
Also adds an experimental API for testing ArrayBuffers in request/response
parameters.
This depends on WebKit changes in https://bugs.webkit.org/show_bug.cgi?id=84899
BUG=122675
TEST=Included browser tests should pass
Review URL: http://codereview.chromium.org/10161038
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135602 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r-- | chrome/renderer/extensions/send_request_natives.cc | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/chrome/renderer/extensions/send_request_natives.cc b/chrome/renderer/extensions/send_request_natives.cc index e5377ce..17e0ba9 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(); |