summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-06 20:22:48 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-06 20:22:48 +0000
commit6c477f46baacb4b73e3972d2f2f322dcbe8a2cb5 (patch)
treefe911c9cb618b34b47f3eec0b5835ed902c22223 /chrome/renderer/extensions
parentd4d0846deecc5b86df52f75be6d4e49f44ce499a (diff)
downloadchromium_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.cc21
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();