| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/dns/host_resolver_impl.h" | 5 #include "net/dns/host_resolver_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 CaptureList capture_list_; | 174 CaptureList capture_list_; |
| 175 unsigned num_requests_waiting_; | 175 unsigned num_requests_waiting_; |
| 176 unsigned num_slots_available_; | 176 unsigned num_slots_available_; |
| 177 base::ConditionVariable requests_waiting_; | 177 base::ConditionVariable requests_waiting_; |
| 178 base::ConditionVariable slots_available_; | 178 base::ConditionVariable slots_available_; |
| 179 | 179 |
| 180 DISALLOW_COPY_AND_ASSIGN(MockHostResolverProc); | 180 DISALLOW_COPY_AND_ASSIGN(MockHostResolverProc); |
| 181 }; | 181 }; |
| 182 | 182 |
| 183 bool AddressListContains(const AddressList& list, const std::string& address, | 183 bool AddressListContains(const AddressList& list, const std::string& address, |
| 184 int port) { | 184 uint16 port) { |
| 185 IPAddressNumber ip; | 185 IPAddressNumber ip; |
| 186 bool rv = ParseIPLiteralToNumber(address, &ip); | 186 bool rv = ParseIPLiteralToNumber(address, &ip); |
| 187 DCHECK(rv); | 187 DCHECK(rv); |
| 188 return std::find(list.begin(), | 188 return std::find(list.begin(), |
| 189 list.end(), | 189 list.end(), |
| 190 IPEndPoint(ip, port)) != list.end(); | 190 IPEndPoint(ip, port)) != list.end(); |
| 191 } | 191 } |
| 192 | 192 |
| 193 // A wrapper for requests to a HostResolver. | 193 // A wrapper for requests to a HostResolver. |
| 194 class Request { | 194 class Request { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 handle_ = NULL; | 242 handle_ = NULL; |
| 243 } | 243 } |
| 244 | 244 |
| 245 const HostResolver::RequestInfo& info() const { return info_; } | 245 const HostResolver::RequestInfo& info() const { return info_; } |
| 246 size_t index() const { return index_; } | 246 size_t index() const { return index_; } |
| 247 const AddressList& list() const { return list_; } | 247 const AddressList& list() const { return list_; } |
| 248 int result() const { return result_; } | 248 int result() const { return result_; } |
| 249 bool completed() const { return result_ != ERR_IO_PENDING; } | 249 bool completed() const { return result_ != ERR_IO_PENDING; } |
| 250 bool pending() const { return handle_ != NULL; } | 250 bool pending() const { return handle_ != NULL; } |
| 251 | 251 |
| 252 bool HasAddress(const std::string& address, int port) const { | 252 bool HasAddress(const std::string& address, uint16 port) const { |
| 253 return AddressListContains(list_, address, port); | 253 return AddressListContains(list_, address, port); |
| 254 } | 254 } |
| 255 | 255 |
| 256 // Returns the number of addresses in |list_|. | 256 // Returns the number of addresses in |list_|. |
| 257 unsigned NumberOfAddresses() const { | 257 unsigned NumberOfAddresses() const { |
| 258 return list_.size(); | 258 return list_.size(); |
| 259 } | 259 } |
| 260 | 260 |
| 261 bool HasOneAddress(const std::string& address, int port) const { | 261 bool HasOneAddress(const std::string& address, uint16 port) const { |
| 262 return HasAddress(address, port) && (NumberOfAddresses() == 1u); | 262 return HasAddress(address, port) && (NumberOfAddresses() == 1u); |
| 263 } | 263 } |
| 264 | 264 |
| 265 // Returns ERR_UNEXPECTED if timed out. | 265 // Returns ERR_UNEXPECTED if timed out. |
| 266 int WaitForResult() { | 266 int WaitForResult() { |
| 267 if (completed()) | 267 if (completed()) |
| 268 return result_; | 268 return result_; |
| 269 base::CancelableClosure closure(base::MessageLoop::QuitClosure()); | 269 base::CancelableClosure closure(base::MessageLoop::QuitClosure()); |
| 270 base::MessageLoop::current()->PostDelayedTask( | 270 base::MessageLoop::current()->PostDelayedTask( |
| 271 FROM_HERE, closure.callback(), TestTimeouts::action_max_timeout()); | 271 FROM_HERE, closure.callback(), TestTimeouts::action_max_timeout()); |
| (...skipping 1824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2096 | 2096 |
| 2097 EXPECT_EQ(OK, requests_[0]->WaitForResult()); | 2097 EXPECT_EQ(OK, requests_[0]->WaitForResult()); |
| 2098 EXPECT_TRUE(requests_[0]->HasOneAddress("192.168.0.1", 80)); | 2098 EXPECT_TRUE(requests_[0]->HasOneAddress("192.168.0.1", 80)); |
| 2099 EXPECT_EQ(OK, requests_[1]->WaitForResult()); | 2099 EXPECT_EQ(OK, requests_[1]->WaitForResult()); |
| 2100 EXPECT_TRUE(requests_[1]->HasOneAddress("192.168.0.2", 80)); | 2100 EXPECT_TRUE(requests_[1]->HasOneAddress("192.168.0.2", 80)); |
| 2101 EXPECT_EQ(OK, requests_[2]->WaitForResult()); | 2101 EXPECT_EQ(OK, requests_[2]->WaitForResult()); |
| 2102 EXPECT_TRUE(requests_[2]->HasOneAddress("192.168.0.3", 80)); | 2102 EXPECT_TRUE(requests_[2]->HasOneAddress("192.168.0.3", 80)); |
| 2103 } | 2103 } |
| 2104 | 2104 |
| 2105 } // namespace net | 2105 } // namespace net |
| OLD | NEW |