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

Side by Side Diff: trunk/src/chrome/renderer/resources/extensions/miscellaneous_bindings.js

Issue 16336011: Revert 203489 "Replace JSON (de)serialization of extension messa..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This contains unprivileged javascript APIs for extensions and apps. It 5 // This contains unprivileged javascript APIs for extensions and apps. It
6 // can be loaded by any extension-related context, such as content scripts or 6 // can be loaded by any extension-related context, such as content scripts or
7 // background pages. See user_script_slave.cc for script that is loaded by 7 // background pages. See user_script_slave.cc for script that is loaded by
8 // content scripts only. 8 // content scripts only.
9 9
10 require('json_schema'); 10 require('json_schema');
11 var json = require('json');
11 var lastError = require('lastError'); 12 var lastError = require('lastError');
12 var miscNatives = requireNative('miscellaneous_bindings'); 13 var miscNatives = requireNative('miscellaneous_bindings');
13 var chrome = requireNative('chrome').GetChrome(); 14 var chrome = requireNative('chrome').GetChrome();
14 var CloseChannel = miscNatives.CloseChannel; 15 var CloseChannel = miscNatives.CloseChannel;
15 var PortAddRef = miscNatives.PortAddRef; 16 var PortAddRef = miscNatives.PortAddRef;
16 var PortRelease = miscNatives.PortRelease; 17 var PortRelease = miscNatives.PortRelease;
17 var PostMessage = miscNatives.PostMessage; 18 var PostMessage = miscNatives.PostMessage;
18 var BindToGC = miscNatives.BindToGC; 19 var BindToGC = miscNatives.BindToGC;
19 20
20 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); 21 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
(...skipping 26 matching lines...) Expand all
47 function PortImpl(portId, opt_name) { 48 function PortImpl(portId, opt_name) {
48 this.portId_ = portId; 49 this.portId_ = portId;
49 this.name = opt_name; 50 this.name = opt_name;
50 this.onDisconnect = new chrome.Event(); 51 this.onDisconnect = new chrome.Event();
51 this.onMessage = new chrome.Event(); 52 this.onMessage = new chrome.Event();
52 } 53 }
53 54
54 // Sends a message asynchronously to the context on the other end of this 55 // Sends a message asynchronously to the context on the other end of this
55 // port. 56 // port.
56 PortImpl.prototype.postMessage = function(msg) { 57 PortImpl.prototype.postMessage = function(msg) {
57 PostMessage(this.portId_, msg); 58 // json.stringify doesn't support a root object which is undefined.
59 if (msg === undefined)
60 msg = null;
61 PostMessage(this.portId_, json.stringify(msg));
58 }; 62 };
59 63
60 // Disconnects the port from the other end. 64 // Disconnects the port from the other end.
61 PortImpl.prototype.disconnect = function() { 65 PortImpl.prototype.disconnect = function() {
62 CloseChannel(this.portId_, true); 66 CloseChannel(this.portId_, true);
63 this.destroy_(); 67 this.destroy_();
64 }; 68 };
65 69
66 PortImpl.prototype.destroy_ = function() { 70 PortImpl.prototype.destroy_ = function() {
67 var portId = this.portId_; 71 var portId = this.portId_;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } finally { 259 } finally {
256 port.destroy_(); 260 port.destroy_();
257 lastError.clear(chrome); 261 lastError.clear(chrome);
258 } 262 }
259 } 263 }
260 }; 264 };
261 265
262 // Called by native code when a message has been sent to the given port. 266 // Called by native code when a message has been sent to the given port.
263 chromeHidden.Port.dispatchOnMessage = function(msg, portId) { 267 chromeHidden.Port.dispatchOnMessage = function(msg, portId) {
264 var port = ports[portId]; 268 var port = ports[portId];
265 if (port) 269 if (port) {
270 if (msg) {
271 msg = json.parse(msg);
272 }
266 port.onMessage.dispatch(msg, port); 273 port.onMessage.dispatch(msg, port);
274 }
267 }; 275 };
268 276
269 // Shared implementation used by tabs.sendMessage and runtime.sendMessage. 277 // Shared implementation used by tabs.sendMessage and runtime.sendMessage.
270 chromeHidden.Port.sendMessageImpl = function(port, request, 278 chromeHidden.Port.sendMessageImpl = function(port, request,
271 responseCallback) { 279 responseCallback) {
272 if (port.name != chromeHidden.kNativeMessageChannel) 280 if (port.name != chromeHidden.kNativeMessageChannel)
273 port.postMessage(request); 281 port.postMessage(request);
274 282
275 if (port.name == chromeHidden.kMessageChannel && !responseCallback) { 283 if (port.name == chromeHidden.kMessageChannel && !responseCallback) {
276 // TODO(mpcomplete): Do this for the old sendRequest API too, after 284 // TODO(mpcomplete): Do this for the old sendRequest API too, after
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 var targetId = null; 332 var targetId = null;
325 if (lastArg >= 0) 333 if (lastArg >= 0)
326 targetId = args[lastArg--]; 334 targetId = args[lastArg--];
327 335
328 if (lastArg != -1) 336 if (lastArg != -1)
329 throw new Error('Invalid arguments to ' + functionName + '.'); 337 throw new Error('Invalid arguments to ' + functionName + '.');
330 return [targetId, request, responseCallback]; 338 return [targetId, request, responseCallback];
331 } 339 }
332 340
333 exports.sendMessageUpdateArguments = sendMessageUpdateArguments; 341 exports.sendMessageUpdateArguments = sendMessageUpdateArguments;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698