diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-20 02:48:01 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-20 02:48:01 +0000 |
commit | 602542d6a7ea6313321d9badfe232df3daf12cef (patch) | |
tree | cda79b0ce15174a989df6925f891b3d23036f9d5 /chrome/renderer/resources/extensions/send_request.js | |
parent | 415fe1d7c0dc7c06aaae7840c4d42d8120420fcf (diff) | |
download | chromium_src-602542d6a7ea6313321d9badfe232df3daf12cef.zip chromium_src-602542d6a7ea6313321d9badfe232df3daf12cef.tar.gz chromium_src-602542d6a7ea6313321d9badfe232df3daf12cef.tar.bz2 |
Use Value objects instead of JSON strings in extension API response IPCs.
When we're sending the result of an extension API method call, we currently
convert a Value object into a JSON string in the browser process, and then call
JSON.parse in javascript on the renderer side. This CL changes that to pass the
Value object in the IPC, and uses V8ValueConverter to turn the Value into the
appropriate v8 native object, avoiding the need to parse JSON.
This is a first step towards supporting binary data for API request
parameters and responses.
BUG=122675
TEST=No new functionality ; existing unit and browser tests should still pass.
Review URL: https://chromiumcodereview.appspot.com/10041047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133133 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources/extensions/send_request.js')
-rw-r--r-- | chrome/renderer/resources/extensions/send_request.js | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/chrome/renderer/resources/extensions/send_request.js b/chrome/renderer/resources/extensions/send_request.js index 3e47f40..045e270 100644 --- a/chrome/renderer/resources/extensions/send_request.js +++ b/chrome/renderer/resources/extensions/send_request.js @@ -29,7 +29,7 @@ chromeHidden.handleResponse = function(requestId, name, if (request.callback) { // Callbacks currently only support one callback argument. - var callbackArgs = response ? [chromeHidden.JSON.parse(response)] : []; + var callbackArgs = typeof(response) != "undefined" ? [response] : []; // Validate callback in debug only -- and only when the // caller has provided a callback. Implementations of api @@ -44,7 +44,6 @@ chromeHidden.handleResponse = function(requestId, name, if (request.callbackSchema.parameters.length > 1) { throw new Error("Callbacks may only define one parameter"); } - chromeHidden.validate(callbackArgs, request.callbackSchema.parameters); } catch (exception) { @@ -53,7 +52,7 @@ chromeHidden.handleResponse = function(requestId, name, } } - if (response) { + if (typeof(response) != "undefined") { request.callback(callbackArgs[0]); } else { request.callback(); |