summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-27 19:18:41 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-27 19:18:41 +0000
commitcc661e5f76c24a8640dbe818a1091e0fe60e1529 (patch)
tree09a8c5c6c76a4c5c990eb1a3fe862373d9536ebe /chrome/renderer/resources
parent1a16364587d4fe3592b78d04ac13b5abfbd6360e (diff)
downloadchromium_src-cc661e5f76c24a8640dbe818a1091e0fe60e1529.zip
chromium_src-cc661e5f76c24a8640dbe818a1091e0fe60e1529.tar.gz
chromium_src-cc661e5f76c24a8640dbe818a1091e0fe60e1529.tar.bz2
Fix port disconnect so that it's refcounted. This fixes a bug where a channel
would close if any one listener on the channel called "disconnect()". BUG=16644 TEST=no Review URL: http://codereview.chromium.org/155476 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21678 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources')
-rw-r--r--chrome/renderer/resources/renderer_extension_bindings.js5
1 files changed, 4 insertions, 1 deletions
diff --git a/chrome/renderer/resources/renderer_extension_bindings.js b/chrome/renderer/resources/renderer_extension_bindings.js
index d8b5a4b..cf53de9 100644
--- a/chrome/renderer/resources/renderer_extension_bindings.js
+++ b/chrome/renderer/resources/renderer_extension_bindings.js
@@ -18,6 +18,8 @@ var chrome = chrome || {};
(function () {
native function OpenChannelToExtension(id);
native function CloseChannel(portId);
+ native function PortAddRef(portId);
+ native function PortRelease(portId);
native function PostMessage(portId, msg);
native function GetChromeHidden();
@@ -46,8 +48,9 @@ var chrome = chrome || {};
var port = new chrome.Port(portId, opt_name);
ports[portId] = port;
chromeHidden.onUnload.addListener(function() {
- port.disconnect();
+ PortRelease(portId);
});
+ PortAddRef(portId);
return port;
}