From 921777f2b0b5adeb766419ffbf6538d10c819912 Mon Sep 17 00:00:00 2001 From: "jochen@chromium.org" Date: Thu, 15 Mar 2012 10:43:22 +0000 Subject: Make sure ports are closed when they're no longer used. It appears to be a common pattern that extensions don't invoke the responseCallback, and so the port objects leak. Register a callback that triggers when the responseCallback is finalized to free up these resources. BUG=114738, 93566 TEST=manual Review URL: http://codereview.chromium.org/9693048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126884 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/common/extensions/docs/messaging.html | 8 ++------ chrome/common/extensions/docs/static/messaging.html | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) (limited to 'chrome/common') diff --git a/chrome/common/extensions/docs/messaging.html b/chrome/common/extensions/docs/messaging.html index 951f969b..0123757 100644 --- a/chrome/common/extensions/docs/messaging.html +++ b/chrome/common/extensions/docs/messaging.html @@ -273,9 +273,7 @@ chrome.tabs.getSelected(null, function(tab) { On the receiving end, you need to set up an chrome.extension.onRequest event listener to handle the message. This looks the same from a content -script or extension page. The request will remain open until you call -sendResponse, so it is good practice to call sendResponse with an empty -object to allow the request to be cleaned up. +script or extension page.

chrome.extension.onRequest.addListener(
   function(request, sender, sendResponse) {
     console.log(sender.tab ?
@@ -283,8 +281,6 @@ object to allow the request to be cleaned up.
                 "from the extension");
     if (request.greeting == "hello")
       sendResponse({farewell: "goodbye"});
-    else
-      sendResponse({}); // snub them.
   });
 

@@ -379,7 +375,7 @@ methods. Here's an example of each: chrome.extension.onRequestExternal.addListener( function(request, sender, sendResponse) { if (sender.id == blacklistedExtension) - sendResponse({}); // don't allow this extension access + return; // don't allow this extension access else if (request.getTargetData) sendResponse({targetData: targetData}); else if (request.activateLasers) { diff --git a/chrome/common/extensions/docs/static/messaging.html b/chrome/common/extensions/docs/static/messaging.html index 1391e7e..c4774a5 100644 --- a/chrome/common/extensions/docs/static/messaging.html +++ b/chrome/common/extensions/docs/static/messaging.html @@ -63,9 +63,7 @@ chrome.tabs.getSelected(null, function(tab) { On the receiving end, you need to set up an chrome.extension.onRequest event listener to handle the message. This looks the same from a content -script or extension page. The request will remain open until you call -sendResponse, so it is good practice to call sendResponse with an empty -object to allow the request to be cleaned up. +script or extension page.

 chrome.extension.onRequest.addListener(
   function(request, sender, sendResponse) {
@@ -74,8 +72,6 @@ chrome.extension.onRequest.addListener(
                 "from the extension");
     if (request.greeting == "hello")
       sendResponse({farewell: "goodbye"});
-    else
-      sendResponse({}); // snub them.
   });
 
@@ -185,7 +181,7 @@ methods. Here's an example of each: chrome.extension.onRequestExternal.addListener( function(request, sender, sendResponse) { if (sender.id == blacklistedExtension) - sendResponse({}); // don't allow this extension access + return; // don't allow this extension access else if (request.getTargetData) sendResponse({targetData: targetData}); else if (request.activateLasers) { -- cgit v1.1