Index: content/browser/loader/resource_loader.cc |
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc |
index ac843af8dc337159aa82ad5cc0e40d74b519eeb4..519065fac9cf4baa6d6dbb2b89930be4a11dbaea 100644 |
--- a/content/browser/loader/resource_loader.cc |
+++ b/content/browser/loader/resource_loader.cc |
@@ -97,7 +97,8 @@ ResourceLoader::ResourceLoader(scoped_ptr<net::URLRequest> request, |
ResourceLoader::~ResourceLoader() { |
if (login_delegate_.get()) |
login_delegate_->OnRequestCancelled(); |
- ssl_client_auth_handler_.reset(); |
+ if (ssl_client_auth_handler_.get()) |
+ ssl_client_auth_handler_->OnRequestCancelled(); |
// Run ResourceHandler destructor before we tear-down the rest of our state |
// as the ResourceHandler may want to inspect the URLRequest and other state. |
@@ -210,6 +211,10 @@ void ResourceLoader::ClearLoginDelegate() { |
login_delegate_ = NULL; |
} |
+void ResourceLoader::ClearSSLClientAuthHandler() { |
+ ssl_client_auth_handler_ = NULL; |
+} |
+ |
void ResourceLoader::OnUploadProgressACK() { |
waiting_for_upload_progress_ack_ = false; |
} |
@@ -287,14 +292,12 @@ void ResourceLoader::OnCertificateRequested( |
return; |
} |
- DCHECK(!ssl_client_auth_handler_) |
+ DCHECK(!ssl_client_auth_handler_.get()) |
<< "OnCertificateRequested called with ssl_client_auth_handler pending"; |
- ssl_client_auth_handler_.reset(new SSLClientAuthHandler( |
+ ssl_client_auth_handler_ = new SSLClientAuthHandler( |
GetRequestInfo()->GetContext()->CreateClientCertStore(), |
request_.get(), |
- cert_info, |
- base::Bind(&ResourceLoader::ContinueWithCertificate, |
- weak_ptr_factory_.GetWeakPtr()))); |
+ cert_info); |
ssl_client_auth_handler_->SelectCertificate(); |
} |
@@ -567,7 +570,10 @@ void ResourceLoader::CancelRequestInternal(int error, bool from_renderer) { |
login_delegate_->OnRequestCancelled(); |
login_delegate_ = NULL; |
} |
- ssl_client_auth_handler_.reset(); |
+ if (ssl_client_auth_handler_.get()) { |
+ ssl_client_auth_handler_->OnRequestCancelled(); |
+ ssl_client_auth_handler_ = NULL; |
+ } |
request_->CancelWithError(error); |
@@ -813,9 +819,4 @@ void ResourceLoader::RecordHistograms() { |
} |
} |
-void ResourceLoader::ContinueWithCertificate(net::X509Certificate* cert) { |
- ssl_client_auth_handler_.reset(); |
- request_->ContinueWithCertificate(cert); |
-} |
- |
} // namespace content |