diff options
Diffstat (limited to 'net/base/host_resolver_impl_unittest.cc')
-rw-r--r-- | net/base/host_resolver_impl_unittest.cc | 146 |
1 files changed, 77 insertions, 69 deletions
diff --git a/net/base/host_resolver_impl_unittest.cc b/net/base/host_resolver_impl_unittest.cc index a4d1954..487520d 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); |