summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources/renderer_extension_bindings.js
diff options
context:
space:
mode:
authormpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-17 19:32:43 +0000
committermpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-17 19:32:43 +0000
commitdfcb62a173898e182e2f10ca635deb753977b9f8 (patch)
tree39d4ca8b82cfc9f39f1726d4b0ad061cb141c516 /chrome/renderer/resources/renderer_extension_bindings.js
parent851c567a756e96913098ac03d84fb9ea5761558d (diff)
downloadchromium_src-dfcb62a173898e182e2f10ca635deb753977b9f8.zip
chromium_src-dfcb62a173898e182e2f10ca635deb753977b9f8.tar.gz
chromium_src-dfcb62a173898e182e2f10ca635deb753977b9f8.tar.bz2
Add a port disconnect event for when one side of an extension message port
goes away. Combine the various ExtensionMessageService IPC message into a single "Invoke" message. BUG=12686 TEST=no Review URL: http://codereview.chromium.org/126234 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18645 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources/renderer_extension_bindings.js')
-rw-r--r--chrome/renderer/resources/renderer_extension_bindings.js17
1 files changed, 12 insertions, 5 deletions
diff --git a/chrome/renderer/resources/renderer_extension_bindings.js b/chrome/renderer/resources/renderer_extension_bindings.js
index cc232b4..31b97ed 100644
--- a/chrome/renderer/resources/renderer_extension_bindings.js
+++ b/chrome/renderer/resources/renderer_extension_bindings.js
@@ -1,5 +1,5 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// -----------------------------------------------------------------------------
@@ -19,11 +19,9 @@ var chrome = chrome || {};
throw new Error("Port '" + portId + "' already exists.");
}
this.portId_ = portId; // TODO(mpcomplete): readonly
+ this.onDisconnect = new chrome.Event();
this.onMessage = new chrome.Event();
chrome.Port.ports_[portId] = this;
- // Note: this object will never get GCed. If we ever care, we could
- // add an "ondetach" method to the onMessage Event that gets called
- // when there are no more listeners.
};
// Map of port IDs to port object.
@@ -39,6 +37,15 @@ var chrome = chrome || {};
chrome.Event.dispatch_("channel-connect", [port]);
};
+ // Called by native code when a channel has been closed.
+ chrome.Port.dispatchOnDisconnect_ = function(portId) {
+ var port = chrome.Port.ports_[portId];
+ if (port) {
+ port.onDisconnect.dispatch(port);
+ delete chrome.Port.ports_[portId];
+ }
+ };
+
// Called by native code when a message has been sent to the given port.
chrome.Port.dispatchOnMessage_ = function(msg, portId) {
var port = chrome.Port.ports_[portId];