From 877182bb87fbe188efdb2d9fc641931706c9a469 Mon Sep 17 00:00:00 2001 From: "toyoshim@chromium.org" <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Thu, 17 May 2012 17:23:08 +0000 Subject: Use WeakPtr for passing SSLErrorHandler::Delegate to SSLManager. If user close the owner tab while SSLManager suspend a query, SocketStreamDispatcherHost will disappear because it is owned by a renderer host. Because WebSocket is a sub resource, its request will be suspended until other major type resources (e.g., main frame) issue the same query request. I Introduce WeakPtr to make sure that SSLCertErrorHandler can call delegate functions safely. BUG=122654 TEST=none Review URL: https://chromiumcodereview.appspot.com/10034017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137676 0039d316-1c4b-4281-b951-d872f2087c98 --- content/browser/ssl/ssl_error_handler.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'content/browser/ssl/ssl_error_handler.h') diff --git a/content/browser/ssl/ssl_error_handler.h b/content/browser/ssl/ssl_error_handler.h index 15832df..647ee71 100644 --- a/content/browser/ssl/ssl_error_handler.h +++ b/content/browser/ssl/ssl_error_handler.h @@ -10,6 +10,7 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" #include "content/common/content_export.h" #include "content/public/browser/global_request_id.h" #include "googleurl/src/gurl.h" @@ -105,7 +106,7 @@ class SSLErrorHandler : public base::RefCountedThreadSafe<SSLErrorHandler> { friend class base::RefCountedThreadSafe<SSLErrorHandler>; // Construct on the IO thread. - SSLErrorHandler(Delegate* delegate, + SSLErrorHandler(base::WeakPtr<Delegate> delegate, const content::GlobalRequestID& id, ResourceType::Type resource_type, const GURL& url, @@ -128,7 +129,7 @@ class SSLErrorHandler : public base::RefCountedThreadSafe<SSLErrorHandler> { content::GlobalRequestID request_id_; // The delegate we are associated with. - Delegate* delegate_; + base::WeakPtr<Delegate> delegate_; private: // Completes the CancelRequest operation on the IO thread. -- cgit v1.1