| Index: net/base/single_request_host_resolver.cc
|
| diff --git a/net/base/single_request_host_resolver.cc b/net/base/single_request_host_resolver.cc
|
| index 5af3dd5cfed45d45842aa1b8c0cdcd772372c0b2..b975c0092df1680c7509e5514ee1d4e32d878def 100644
|
| --- a/net/base/single_request_host_resolver.cc
|
| +++ b/net/base/single_request_host_resolver.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "net/base/single_request_host_resolver.h"
|
|
|
| +#include "base/bind.h"
|
| +#include "base/bind_helpers.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/logging.h"
|
| #include "net/base/net_errors.h"
|
| @@ -13,9 +15,9 @@ namespace net {
|
| SingleRequestHostResolver::SingleRequestHostResolver(HostResolver* resolver)
|
| : resolver_(resolver),
|
| cur_request_(NULL),
|
| - cur_request_callback_(NULL),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(
|
| - callback_(this, &SingleRequestHostResolver::OnResolveCompletion)) {
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(callback_(
|
| + base::Bind(&SingleRequestHostResolver::OnResolveCompletion,
|
| + base::Unretained(this)))) {
|
| DCHECK(resolver_ != NULL);
|
| }
|
|
|
| @@ -23,25 +25,25 @@ SingleRequestHostResolver::~SingleRequestHostResolver() {
|
| Cancel();
|
| }
|
|
|
| -int SingleRequestHostResolver::Resolve(const HostResolver::RequestInfo& info,
|
| - AddressList* addresses,
|
| - OldCompletionCallback* callback,
|
| - const BoundNetLog& net_log) {
|
| +int SingleRequestHostResolver::Resolve(
|
| + const HostResolver::RequestInfo& info, AddressList* addresses,
|
| + const CompletionCallback& callback, const BoundNetLog& net_log) {
|
| DCHECK(addresses);
|
| - DCHECK(callback);
|
| - DCHECK(!cur_request_callback_) << "resolver already in use";
|
| + DCHECK_EQ(false, callback.is_null());
|
| + DCHECK(cur_request_callback_.is_null()) << "resolver already in use";
|
|
|
| HostResolver::RequestHandle request = NULL;
|
|
|
| // We need to be notified of completion before |callback| is called, so that
|
| // we can clear out |cur_request_*|.
|
| - OldCompletionCallback* transient_callback = callback ? &callback_ : NULL;
|
| + CompletionCallback transient_callback =
|
| + callback.is_null() ? CompletionCallback() : callback_;
|
|
|
| int rv = resolver_->Resolve(
|
| info, addresses, transient_callback, &request, net_log);
|
|
|
| if (rv == ERR_IO_PENDING) {
|
| - DCHECK(callback);
|
| + DCHECK_EQ(false, callback.is_null());
|
| // Cleared in OnResolveCompletion().
|
| cur_request_ = request;
|
| cur_request_callback_ = callback;
|
| @@ -51,24 +53,25 @@ int SingleRequestHostResolver::Resolve(const HostResolver::RequestInfo& info,
|
| }
|
|
|
| void SingleRequestHostResolver::Cancel() {
|
| - if (cur_request_callback_) {
|
| + if (!cur_request_callback_.is_null()) {
|
| resolver_->CancelRequest(cur_request_);
|
| cur_request_ = NULL;
|
| - cur_request_callback_ = NULL;
|
| + cur_request_callback_.Reset();
|
| }
|
| }
|
|
|
| void SingleRequestHostResolver::OnResolveCompletion(int result) {
|
| - DCHECK(cur_request_ && cur_request_callback_);
|
| + DCHECK(cur_request_);
|
| + DCHECK_EQ(false, cur_request_callback_.is_null());
|
|
|
| - OldCompletionCallback* callback = cur_request_callback_;
|
| + CompletionCallback callback = cur_request_callback_;
|
|
|
| // Clear the outstanding request information.
|
| cur_request_ = NULL;
|
| - cur_request_callback_ = NULL;
|
| + cur_request_callback_.Reset();
|
|
|
| // Call the user's original callback.
|
| - callback->Run(result);
|
| + callback.Run(result);
|
| }
|
|
|
| } // namespace net
|
|
|