Chromium Code Reviews| 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 29227588aa8dc013a176555517a613914f2fa11b..145027d817a0340d0e7e6b0faff7d3cbd8781d7a 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" |
| @@ -268,24 +270,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); |
| } |
| @@ -330,7 +333,6 @@ class ResolveRequest { |
| HostResolver* resolver_; |
| Delegate* delegate_; |
| - OldCompletionCallbackImpl<ResolveRequest> callback_; |
| DISALLOW_COPY_AND_ASSIGN(ResolveRequest); |
| }; |
| @@ -339,21 +341,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) { |
| @@ -369,7 +371,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); |
| @@ -459,7 +461,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); |
| @@ -516,9 +518,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); |
| @@ -543,9 +545,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); |
| @@ -575,9 +577,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); |
| } |
| @@ -592,9 +594,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); |
| } |
| @@ -938,15 +940,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 |
| @@ -998,8 +998,8 @@ TEST_F(HostResolverImplTest, Observers) { |
| // Resolve "host1". |
| HostResolver::RequestInfo info1(HostPortPair("host1", 70)); |
| CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
| - TestOldCompletionCallback callback; |
| - int rv = host_resolver->Resolve(info1, &addrlist, &callback, NULL, |
| + TestCompletionCallback callback; |
| + int rv = host_resolver->Resolve(info1, &addrlist, callback.callback(), NULL, |
| log.bound()); |
| EXPECT_EQ(ERR_IO_PENDING, rv); |
| rv = callback.WaitForResult(); |
| @@ -1024,7 +1024,8 @@ TEST_F(HostResolverImplTest, Observers) { |
| // 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. |
| EXPECT_EQ(2U, observer.start_log.size()); |
| @@ -1038,7 +1039,8 @@ TEST_F(HostResolverImplTest, Observers) { |
| // Resolve "host2", setting referrer to "http://foobar.com" |
| HostResolver::RequestInfo info2(HostPortPair("host2", 70)); |
| info2.set_referrer(GURL("http://foobar.com")); |
| - rv = host_resolver->Resolve(info2, &addrlist, &callback, NULL, BoundNetLog()); |
| + rv = host_resolver->Resolve(info2, &addrlist, callback.callback(), NULL, |
| + BoundNetLog()); |
| EXPECT_EQ(ERR_IO_PENDING, rv); |
| rv = callback.WaitForResult(); |
| EXPECT_EQ(OK, rv); |
| @@ -1056,7 +1058,8 @@ TEST_F(HostResolverImplTest, Observers) { |
| // Resolve "host3" |
| HostResolver::RequestInfo info3(HostPortPair("host3", 70)); |
| - host_resolver->Resolve(info3, &addrlist, &callback, NULL, BoundNetLog()); |
| + host_resolver->Resolve(info3, &addrlist, callback.callback(), NULL, |
| + BoundNetLog()); |
| // No effect this time, since observer was removed. |
| EXPECT_EQ(3U, observer.start_log.size()); |
| @@ -1076,7 +1079,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) { |
| CreateHostResolverImpl(NULL)); |
| host_resolver->AddObserver(&observer); |
| - TestOldCompletionCallback callback; |
| + TestCompletionCallback callback; |
| EXPECT_EQ(0U, observer.start_log.size()); |
| EXPECT_EQ(0U, observer.finish_log.size()); |
| @@ -1086,7 +1089,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) { |
| HostResolver::RequestInfo info1(HostPortPair("host1", 70)); |
| HostResolver::RequestHandle req = NULL; |
| AddressList addrlist; |
| - int rv = host_resolver->Resolve(info1, &addrlist, &callback, &req, |
| + int rv = host_resolver->Resolve(info1, &addrlist, callback.callback(), &req, |
| BoundNetLog()); |
| EXPECT_EQ(ERR_IO_PENDING, rv); |
| EXPECT_TRUE(NULL != req); |
| @@ -1110,7 +1113,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) { |
| // Start an async request for (host2:60) |
| HostResolver::RequestInfo info2(HostPortPair("host2", 60)); |
| - rv = host_resolver->Resolve(info2, &addrlist, &callback, NULL, |
| + rv = host_resolver->Resolve(info2, &addrlist, callback.callback(), NULL, |
| BoundNetLog()); |
| EXPECT_EQ(ERR_IO_PENDING, rv); |
| EXPECT_TRUE(NULL != req); |
| @@ -1148,15 +1151,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. |
| @@ -1165,7 +1169,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()); |
| } |
| @@ -1178,9 +1183,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); |
| @@ -1210,9 +1215,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); |
| @@ -1226,7 +1231,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(); |
| @@ -1242,12 +1247,13 @@ class ResolveWithinCallback : public CallbackRunner< Tuple1<int> > { |
| virtual void RunWithParams(const Tuple1<int>& params) { |
| // Ditch the WaitingHostResolverProc so that the subsequent request |
| // succeeds. |
| - callback_.RunWithParams(params); |
| + //callback_.RunWithParams(params); |
|
willchan no longer on Chromium
2011/11/14 16:45:12
Change this to callback_.callback()->Run(params.a)
James Hawkins
2011/11/15 23:34:33
Unfortunately the issue is that Resolve takes a Co
willchan no longer on Chromium
2011/11/16 00:08:01
Oh, you probably want to do the same transformatio
James Hawkins
2011/11/16 00:49:54
Cool, done.
|
| host_resolver_.reset( |
| CreateHostResolverImpl(CreateCatchAllHostResolverProc())); |
| EXPECT_EQ(ERR_IO_PENDING, |
| - host_resolver_->Resolve(info_, &addrlist_, &nested_callback_, |
| - NULL, BoundNetLog())); |
| + host_resolver_->Resolve(info_, &addrlist_, |
| + nested_callback_.callback(), NULL, |
| + BoundNetLog())); |
| } |
| int WaitForResult() { |
| @@ -1261,8 +1267,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_; |
| }; |
| @@ -1275,7 +1281,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()*/CompletionCallback(), NULL, |
| BoundNetLog()); |
| EXPECT_EQ(ERR_IO_PENDING, rv); |
| @@ -1318,13 +1324,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); |
| } |
| @@ -1400,14 +1407,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); |
| } |
| @@ -1476,14 +1484,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 |
| @@ -1543,14 +1552,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; |
| } |
| @@ -1613,14 +1623,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; |
| } |
| @@ -1675,8 +1686,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); |
| @@ -1720,9 +1732,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); |