diff options
author | mpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-17 19:32:43 +0000 |
---|---|---|
committer | mpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-17 19:32:43 +0000 |
commit | dfcb62a173898e182e2f10ca635deb753977b9f8 (patch) | |
tree | 39d4ca8b82cfc9f39f1726d4b0ad061cb141c516 /chrome/renderer/resources/renderer_extension_bindings.js | |
parent | 851c567a756e96913098ac03d84fb9ea5761558d (diff) | |
download | chromium_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.js | 17 |
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]; |