summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources/extensions/send_request.js
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-09 20:30:19 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-09 20:30:19 +0000
commit2d58238b78d653db0293b107997022b7046c0e83 (patch)
tree8ed2dfb54214ac12380b2363ec3bdf7a674149ba /chrome/renderer/resources/extensions/send_request.js
parent395f7e2929bacb73128bbe2c5833b1f21a71ca72 (diff)
downloadchromium_src-2d58238b78d653db0293b107997022b7046c0e83.zip
chromium_src-2d58238b78d653db0293b107997022b7046c0e83.tar.gz
chromium_src-2d58238b78d653db0293b107997022b7046c0e83.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 is re-landing https://chromiumcodereview.appspot.com/10161038, which ran into some test failures fixed by crrev.com/135933) TBR=asargent@chromium.org BUG=122675 TEST=Included browser tests should pass Review URL: https://chromiumcodereview.appspot.com/10377063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136114 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources/extensions/send_request.js')
-rw-r--r--chrome/renderer/resources/extensions/send_request.js11
1 files changed, 8 insertions, 3 deletions
diff --git a/chrome/renderer/resources/extensions/send_request.js b/chrome/renderer/resources/extensions/send_request.js
index 045e270..2e79b8a 100644
--- a/chrome/renderer/resources/extensions/send_request.js
+++ b/chrome/renderer/resources/extensions/send_request.js
@@ -107,8 +107,13 @@ function sendRequest(functionName, args, argSchemas, opt_args) {
if (request.args === undefined)
request.args = null;
- var sargs = opt_args.noStringify ?
- request.args : chromeHidden.JSON.stringify(request.args);
+ // TODO(asargent) - convert all optional native functions to accept raw
+ // v8 values instead of expecting JSON strings.
+ var doStringify = false;
+ if (opt_args.nativeFunction && !opt_args.noStringify)
+ doStringify = true;
+ var requestArgs = doStringify ?
+ chromeHidden.JSON.stringify(request.args) : request.args;
var nativeFunction = opt_args.nativeFunction || natives.StartRequest;
var requestId = natives.GetNextRequestId();
@@ -116,7 +121,7 @@ function sendRequest(functionName, args, argSchemas, opt_args) {
requests[requestId] = request;
var hasCallback =
(request.callback || opt_args.customCallback) ? true : false;
- return nativeFunction(functionName, sargs, requestId, hasCallback,
+ return nativeFunction(functionName, requestArgs, requestId, hasCallback,
opt_args.forIOThread);
}