Index: net/http/disk_cache_based_ssl_host_info.cc |
diff --git a/net/http/disk_cache_based_ssl_host_info.cc b/net/http/disk_cache_based_ssl_host_info.cc |
index cb7012a4c0ebc57dfa13e9c4346efac07427d614..003618e5e4ea4b7b1b16b4d8d674b4aa3b835468 100644 |
--- a/net/http/disk_cache_based_ssl_host_info.cc |
+++ b/net/http/disk_cache_based_ssl_host_info.cc |
@@ -48,8 +48,7 @@ DiskCacheBasedSSLHostInfo::DiskCacheBasedSSLHostInfo( |
hostname_(hostname), |
http_cache_(http_cache), |
backend_(NULL), |
- entry_(NULL), |
- user_callback_(NULL) { |
+ entry_(NULL) { |
} |
void DiskCacheBasedSSLHostInfo::Start() { |
@@ -58,16 +57,19 @@ void DiskCacheBasedSSLHostInfo::Start() { |
DoLoop(OK); |
} |
-int DiskCacheBasedSSLHostInfo::WaitForDataReady(OldCompletionCallback* callback) { |
+int DiskCacheBasedSSLHostInfo::WaitForDataReady( |
+ const CompletionCallback& callback) { |
DCHECK(CalledOnValidThread()); |
DCHECK(state_ != GET_BACKEND); |
if (ready_) |
return OK; |
- if (callback) { |
- DCHECK(!user_callback_); |
+ |
+ if (!callback.is_null()) { |
+ DCHECK(user_callback_.is_null()); |
user_callback_ = callback; |
} |
+ |
return ERR_IO_PENDING; |
} |
@@ -77,7 +79,7 @@ void DiskCacheBasedSSLHostInfo::Persist() { |
DCHECK(new_data_.empty()); |
CHECK(ready_); |
- DCHECK(user_callback_ == NULL); |
+ DCHECK(user_callback_.is_null()); |
new_data_ = Serialize(); |
if (!backend_) |
@@ -88,7 +90,7 @@ void DiskCacheBasedSSLHostInfo::Persist() { |
} |
DiskCacheBasedSSLHostInfo::~DiskCacheBasedSSLHostInfo() { |
- DCHECK(!user_callback_); |
+ DCHECK(user_callback_.is_null()); |
if (entry_) |
entry_->Close(); |
if (!IsCallbackPending()) |
@@ -101,11 +103,10 @@ std::string DiskCacheBasedSSLHostInfo::key() const { |
void DiskCacheBasedSSLHostInfo::OnIOComplete(int rv) { |
rv = DoLoop(rv); |
- if (rv != ERR_IO_PENDING) { |
- OldCompletionCallback* callback = user_callback_; |
- user_callback_ = NULL; |
- if (callback) |
- callback->Run(rv); |
+ if (rv != ERR_IO_PENDING && !user_callback_.is_null()) { |
+ CompletionCallback callback = user_callback_; |
+ user_callback_.Reset(); |
+ callback.Run(rv); |
} |
} |