Index: content/browser/ssl/ssl_client_auth_handler.cc |
diff --git a/content/browser/ssl/ssl_client_auth_handler.cc b/content/browser/ssl/ssl_client_auth_handler.cc |
index fe2fac9012a1b66ea11a0f5ff49e2d5e0d4d6fc3..db961cf0d38ae302573e27d5ac146a043e0a1466 100644 |
--- a/content/browser/ssl/ssl_client_auth_handler.cc |
+++ b/content/browser/ssl/ssl_client_auth_handler.cc |
@@ -56,6 +56,10 @@ class SSLClientAuthHandler::Core : public base::RefCountedThreadSafe<Core> { |
void GetClientCerts() { |
if (client_cert_store_) { |
+ // TODO(davidben): This is still a cyclical ownership where |
+ // GetClientCerts' requirement that |client_cert_store_| remains alive |
+ // until the call completes is maintained by the reference held in the |
+ // callback. |
client_cert_store_->GetClientCerts( |
*cert_request_info_, &cert_request_info_->client_certs, |
base::Bind(&SSLClientAuthHandler::Core::DidGetClientCerts, this)); |
@@ -85,8 +89,7 @@ SSLClientAuthHandler::SSLClientAuthHandler( |
net::URLRequest* request, |
net::SSLCertRequestInfo* cert_request_info, |
const SSLClientAuthHandler::CertificateCallback& callback) |
- : core_(nullptr), |
- request_(request), |
+ : request_(request), |
cert_request_info_(cert_request_info), |
callback_(callback), |
weak_factory_(this) { |
@@ -142,7 +145,6 @@ void SSLClientAuthHandler::CertificateSelected(net::X509Certificate* cert) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
callback_.Run(cert); |
- // |this| may be deleted at this point. |
} |
} // namespace content |