Index: net/base/host_resolver_impl_unittest.cc |
diff --git a/net/base/host_resolver_impl_unittest.cc b/net/base/host_resolver_impl_unittest.cc |
index a4d1954ab391a7da8e78f9e94ab3242e1e6337a2..487520dcffac82516348cfdae7ad219935b2d167 100644 |
--- a/net/base/host_resolver_impl_unittest.cc |
+++ b/net/base/host_resolver_impl_unittest.cc |
@@ -6,6 +6,8 @@ |
#include <string> |
+#include "base/bind.h" |
+#include "base/bind_helpers.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
#include "base/message_loop.h" |
@@ -267,24 +269,25 @@ class ResolveRequest { |
Delegate* delegate) |
: info_(HostPortPair(hostname, port)), |
resolver_(resolver), |
- delegate_(delegate), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- callback_(this, &ResolveRequest::OnLookupFinished)) { |
+ delegate_(delegate) { |
// Start the request. |
- int err = resolver->Resolve(info_, &addrlist_, &callback_, &req_, |
- BoundNetLog()); |
+ int err = resolver->Resolve( |
+ info_, &addrlist_, |
+ base::Bind(&ResolveRequest::OnLookupFinished, base::Unretained(this)), |
+ &req_, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, err); |
} |
ResolveRequest(HostResolver* resolver, |
const HostResolver::RequestInfo& info, |
Delegate* delegate) |
- : info_(info), resolver_(resolver), delegate_(delegate), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- callback_(this, &ResolveRequest::OnLookupFinished)) { |
+ : info_(info), resolver_(resolver), delegate_(delegate) { |
// Start the request. |
- int err = resolver->Resolve(info, &addrlist_, &callback_, &req_, |
- BoundNetLog()); |
+ int err = resolver->Resolve( |
+ info, &addrlist_, |
+ base::Bind(&ResolveRequest::OnLookupFinished, |
+ base::Unretained(this)), |
+ &req_, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, err); |
} |
@@ -329,7 +332,6 @@ class ResolveRequest { |
HostResolver* resolver_; |
Delegate* delegate_; |
- OldCompletionCallbackImpl<ResolveRequest> callback_; |
DISALLOW_COPY_AND_ASSIGN(ResolveRequest); |
}; |
@@ -338,21 +340,21 @@ class HostResolverImplTest : public testing::Test { |
public: |
HostResolverImplTest() |
: callback_called_(false), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- callback_(this, &HostResolverImplTest::OnLookupFinished)) { |
+ ALLOW_THIS_IN_INITIALIZER_LIST(callback_( |
+ base::Bind(&HostResolverImplTest::OnLookupFinished, |
+ base::Unretained(this)))) { |
} |
protected: |
- bool callback_called_; |
- int callback_result_; |
- OldCompletionCallbackImpl<HostResolverImplTest> callback_; |
- |
- private: |
void OnLookupFinished(int result) { |
callback_called_ = true; |
callback_result_ = result; |
MessageLoop::current()->Quit(); |
} |
+ |
+ bool callback_called_; |
+ int callback_result_; |
+ CompletionCallback callback_; |
}; |
TEST_F(HostResolverImplTest, AsynchronousLookup) { |
@@ -368,7 +370,7 @@ TEST_F(HostResolverImplTest, AsynchronousLookup) { |
HostResolver::RequestInfo info(HostPortPair("just.testing", kPortnum)); |
CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
- int err = host_resolver->Resolve(info, &addrlist, &callback_, NULL, |
+ int err = host_resolver->Resolve(info, &addrlist, callback_, NULL, |
log.bound()); |
EXPECT_EQ(ERR_IO_PENDING, err); |
@@ -458,7 +460,7 @@ TEST_F(HostResolverImplTest, CanceledAsynchronousLookup) { |
const int kPortnum = 80; |
HostResolver::RequestInfo info(HostPortPair("just.testing", kPortnum)); |
- int err = host_resolver->Resolve(info, &addrlist, &callback_, NULL, |
+ int err = host_resolver->Resolve(info, &addrlist, callback_, NULL, |
log.bound()); |
EXPECT_EQ(ERR_IO_PENDING, err); |
@@ -515,9 +517,9 @@ TEST_F(HostResolverImplTest, NumericIPv4Address) { |
CreateHostResolverImpl(resolver_proc)); |
AddressList addrlist; |
const int kPortnum = 5555; |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
HostResolver::RequestInfo info(HostPortPair("127.1.2.3", kPortnum)); |
- int err = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int err = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(OK, err); |
@@ -542,9 +544,9 @@ TEST_F(HostResolverImplTest, NumericIPv6Address) { |
CreateHostResolverImpl(resolver_proc)); |
AddressList addrlist; |
const int kPortnum = 5555; |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
HostResolver::RequestInfo info(HostPortPair("2001:db8::1", kPortnum)); |
- int err = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int err = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(OK, err); |
@@ -574,9 +576,9 @@ TEST_F(HostResolverImplTest, EmptyHost) { |
CreateHostResolverImpl(resolver_proc)); |
AddressList addrlist; |
const int kPortnum = 5555; |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
HostResolver::RequestInfo info(HostPortPair("", kPortnum)); |
- int err = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int err = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_NAME_NOT_RESOLVED, err); |
} |
@@ -591,9 +593,9 @@ TEST_F(HostResolverImplTest, LongHost) { |
AddressList addrlist; |
const int kPortnum = 5555; |
std::string hostname(4097, 'a'); |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
HostResolver::RequestInfo info(HostPortPair(hostname, kPortnum)); |
- int err = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int err = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_NAME_NOT_RESOLVED, err); |
} |
@@ -937,15 +939,13 @@ class BypassCacheVerifier : public ResolveRequest::Delegate { |
// Since caching is enabled, this should complete synchronously. |
// Note that |junk_callback| shouldn't be used since we are going to |
- // complete synchronously. We can't specify NULL though since that would |
- // mean synchronous mode so we give it a value of 1. |
- OldCompletionCallback* junk_callback = |
- reinterpret_cast<OldCompletionCallback*> (1); |
+ // complete synchronously. |
+ TestCompletionCallback junk_callback; |
AddressList addrlist; |
HostResolver::RequestInfo info(HostPortPair("a", 70)); |
- int error = resolver->Resolve(info, &addrlist, junk_callback, NULL, |
- BoundNetLog()); |
+ int error = resolver->Resolve(info, &addrlist, junk_callback.callback(), |
+ NULL, BoundNetLog()); |
EXPECT_EQ(OK, error); |
// Ok good. Now make sure that if we ask to bypass the cache, it can no |
@@ -991,15 +991,16 @@ TEST_F(HostResolverImplTest, FlushCacheOnIPAddressChange) { |
// Resolve "host1". |
HostResolver::RequestInfo info1(HostPortPair("host1", 70)); |
- TestOldCompletionCallback callback; |
- int rv = host_resolver->Resolve(info1, &addrlist, &callback, NULL, |
+ TestCompletionCallback callback; |
+ int rv = host_resolver->Resolve(info1, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(OK, callback.WaitForResult()); |
// Resolve "host1" again -- this time it will be served from cache, but it |
// should still notify of completion. |
- rv = host_resolver->Resolve(info1, &addrlist, &callback, NULL, BoundNetLog()); |
+ rv = host_resolver->Resolve(info1, &addrlist, callback.callback(), NULL, |
+ BoundNetLog()); |
ASSERT_EQ(OK, rv); // Should complete synchronously. |
// Flush cache by triggering an IP address change. |
@@ -1008,7 +1009,8 @@ TEST_F(HostResolverImplTest, FlushCacheOnIPAddressChange) { |
// Resolve "host1" again -- this time it won't be served from cache, so it |
// will complete asynchronously. |
- rv = host_resolver->Resolve(info1, &addrlist, &callback, NULL, BoundNetLog()); |
+ rv = host_resolver->Resolve(info1, &addrlist, callback.callback(), NULL, |
+ BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, rv); // Should complete asynchronously. |
EXPECT_EQ(OK, callback.WaitForResult()); |
} |
@@ -1021,9 +1023,9 @@ TEST_F(HostResolverImplTest, AbortOnIPAddressChanged) { |
// Resolve "host1". |
HostResolver::RequestInfo info(HostPortPair("host1", 70)); |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
AddressList addrlist; |
- int rv = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int rv = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
@@ -1053,9 +1055,9 @@ TEST_F(HostResolverImplTest, ObeyPoolConstraintsAfterIPAddressChange) { |
// Resolve "host1". |
HostResolver::RequestInfo info(HostPortPair("host1", 70)); |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
AddressList addrlist; |
- int rv = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int rv = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
@@ -1069,7 +1071,7 @@ TEST_F(HostResolverImplTest, ObeyPoolConstraintsAfterIPAddressChange) { |
EXPECT_EQ(ERR_ABORTED, callback.WaitForResult()); |
- rv = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ rv = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
resolver_proc->Wait(); |
@@ -1077,24 +1079,24 @@ TEST_F(HostResolverImplTest, ObeyPoolConstraintsAfterIPAddressChange) { |
EXPECT_EQ(OK, callback.WaitForResult()); |
} |
-class ResolveWithinCallback : public CallbackRunner< Tuple1<int> > { |
+class ResolveWithinCallback { |
public: |
explicit ResolveWithinCallback(const HostResolver::RequestInfo& info) |
: info_(info) {} |
- virtual void RunWithParams(const Tuple1<int>& params) { |
+ const CompletionCallback& callback() const { return callback_.callback(); } |
+ |
+ int WaitForResult() { |
+ int result = callback_.WaitForResult(); |
// Ditch the WaitingHostResolverProc so that the subsequent request |
// succeeds. |
- callback_.RunWithParams(params); |
host_resolver_.reset( |
CreateHostResolverImpl(CreateCatchAllHostResolverProc())); |
EXPECT_EQ(ERR_IO_PENDING, |
- host_resolver_->Resolve(info_, &addrlist_, &nested_callback_, |
- NULL, BoundNetLog())); |
- } |
- |
- int WaitForResult() { |
- return callback_.WaitForResult(); |
+ host_resolver_->Resolve(info_, &addrlist_, |
+ nested_callback_.callback(), NULL, |
+ BoundNetLog())); |
+ return result; |
} |
int WaitForNestedResult() { |
@@ -1104,8 +1106,8 @@ class ResolveWithinCallback : public CallbackRunner< Tuple1<int> > { |
private: |
const HostResolver::RequestInfo info_; |
AddressList addrlist_; |
- TestOldCompletionCallback callback_; |
- TestOldCompletionCallback nested_callback_; |
+ TestCompletionCallback callback_; |
+ TestCompletionCallback nested_callback_; |
scoped_ptr<HostResolver> host_resolver_; |
}; |
@@ -1118,7 +1120,7 @@ TEST_F(HostResolverImplTest, OnlyAbortExistingRequestsOnIPAddressChange) { |
HostResolver::RequestInfo info(HostPortPair("host1", 70)); |
ResolveWithinCallback callback(info); |
AddressList addrlist; |
- int rv = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int rv = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
@@ -1158,13 +1160,14 @@ TEST_F(HostResolverImplTest, HigherPriorityRequestsStartedFirst) { |
CreateResolverRequest("req5", HIGHEST), |
}; |
- TestOldCompletionCallback callback[arraysize(req)]; |
+ TestCompletionCallback callback[arraysize(req)]; |
AddressList addrlist[arraysize(req)]; |
// Start all of the requests. |
for (size_t i = 0; i < arraysize(req); ++i) { |
int rv = host_resolver->Resolve(req[i], &addrlist[i], |
- &callback[i], NULL, BoundNetLog()); |
+ callback[i].callback(), NULL, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
} |
@@ -1218,14 +1221,15 @@ TEST_F(HostResolverImplTest, CancelPendingRequest) { |
CreateResolverRequest("req6", MEDIUM), |
}; |
- TestOldCompletionCallback callback[arraysize(req)]; |
+ TestCompletionCallback callback[arraysize(req)]; |
AddressList addrlist[arraysize(req)]; |
HostResolver::RequestHandle handle[arraysize(req)]; |
// Start all of the requests. |
for (size_t i = 0; i < arraysize(req); ++i) { |
int rv = host_resolver->Resolve(req[i], &addrlist[i], |
- &callback[i], &handle[i], BoundNetLog()); |
+ callback[i].callback(), &handle[i], |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
} |
@@ -1294,14 +1298,15 @@ TEST_F(HostResolverImplTest, QueueOverflow) { |
CreateResolverRequest("req7", MEDIUM), // Evicts req2. |
}; |
- TestOldCompletionCallback callback[arraysize(req)]; |
+ TestCompletionCallback callback[arraysize(req)]; |
AddressList addrlist[arraysize(req)]; |
HostResolver::RequestHandle handle[arraysize(req)]; |
// Start all of the requests. |
for (size_t i = 0; i < arraysize(req); ++i) { |
int rv = host_resolver->Resolve(req[i], &addrlist[i], |
- &callback[i], &handle[i], BoundNetLog()); |
+ callback[i].callback(), &handle[i], |
+ BoundNetLog()); |
if (i == 4u) |
EXPECT_EQ(ERR_HOST_RESOLVER_QUEUE_TOO_LARGE, rv); |
else |
@@ -1361,14 +1366,15 @@ TEST_F(HostResolverImplTest, SetDefaultAddressFamily_IPv4) { |
CreateResolverRequestForAddressFamily("h1", MEDIUM, ADDRESS_FAMILY_IPV6), |
}; |
- TestOldCompletionCallback callback[arraysize(req)]; |
+ TestCompletionCallback callback[arraysize(req)]; |
AddressList addrlist[arraysize(req)]; |
HostResolver::RequestHandle handle[arraysize(req)]; |
// Start all of the requests. |
for (size_t i = 0; i < arraysize(req); ++i) { |
int rv = host_resolver->Resolve(req[i], &addrlist[i], |
- &callback[i], &handle[i], BoundNetLog()); |
+ callback[i].callback(), &handle[i], |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv) << i; |
} |
@@ -1431,14 +1437,15 @@ TEST_F(HostResolverImplTest, SetDefaultAddressFamily_IPv6) { |
CreateResolverRequestForAddressFamily("h1", MEDIUM, ADDRESS_FAMILY_IPV4), |
}; |
- TestOldCompletionCallback callback[arraysize(req)]; |
+ TestCompletionCallback callback[arraysize(req)]; |
AddressList addrlist[arraysize(req)]; |
HostResolver::RequestHandle handle[arraysize(req)]; |
// Start all of the requests. |
for (size_t i = 0; i < arraysize(req); ++i) { |
int rv = host_resolver->Resolve(req[i], &addrlist[i], |
- &callback[i], &handle[i], BoundNetLog()); |
+ callback[i].callback(), &handle[i], |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv) << i; |
} |
@@ -1493,8 +1500,9 @@ TEST_F(HostResolverImplTest, DisallowNonCachedResponses) { |
EXPECT_EQ(ERR_DNS_CACHE_MISS, err); |
// This time, we fetch normally. |
- TestOldCompletionCallback callback; |
- err = host_resolver->Resolve(info, &addrlist, &callback, NULL, log.bound()); |
+ TestCompletionCallback callback; |
+ err = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
+ log.bound()); |
EXPECT_EQ(ERR_IO_PENDING, err); |
err = callback.WaitForResult(); |
EXPECT_EQ(OK, err); |
@@ -1538,9 +1546,9 @@ TEST_F(HostResolverImplTest, MultipleAttempts) { |
// Resolve "host1". |
HostResolver::RequestInfo info(HostPortPair("host1", 70)); |
- TestOldCompletionCallback callback; |
+ TestCompletionCallback callback; |
AddressList addrlist; |
- int rv = host_resolver->Resolve(info, &addrlist, &callback, NULL, |
+ int rv = host_resolver->Resolve(info, &addrlist, callback.callback(), NULL, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |