| Index: chrome/renderer/resources/extensions/messaging.js
|
| diff --git a/chrome/renderer/resources/extensions/messaging.js b/chrome/renderer/resources/extensions/messaging.js
|
| index a9a39512e99b61c43e48d8513e32a085503aa5f8..a39ecb1cb6c6b7f7c13ac907fc58397cfc3fd445 100644
|
| --- a/chrome/renderer/resources/extensions/messaging.js
|
| +++ b/chrome/renderer/resources/extensions/messaging.js
|
| @@ -161,7 +161,8 @@
|
| if (!requestEvent.hasListeners())
|
| return false;
|
| var port = createPort(portId, channelName);
|
| - port.onMessage.addListener(function(request) {
|
| +
|
| + function messageListener(request) {
|
| var responseCallbackPreserved = false;
|
| var responseCallback = function(response) {
|
| if (port) {
|
| @@ -198,7 +199,13 @@
|
| port = null;
|
| }
|
| }
|
| - });
|
| + }
|
| +
|
| + port.onDestroy_ = function() {
|
| + port.onMessage.removeListener(messageListener);
|
| + };
|
| + port.onMessage.addListener(messageListener);
|
| +
|
| var eventName = (isSendMessage ?
|
| (isExternal ?
|
| "runtime.onMessageExternal" : "runtime.onMessage") :
|
|
|