| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_mojo.h" | 5 #include "net/dns/host_resolver_mojo.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 | 159 |
| 160 void SetUp() override { | 160 void SetUp() override { |
| 161 mock_resolver_.reset(new MockMojoHostResolver( | 161 mock_resolver_.reset(new MockMojoHostResolver( |
| 162 base::Bind(&Waiter::NotifyEvent, base::Unretained(&waiter_), | 162 base::Bind(&Waiter::NotifyEvent, base::Unretained(&waiter_), |
| 163 ConnectionErrorSource::REQUEST))); | 163 ConnectionErrorSource::REQUEST))); |
| 164 resolver_.reset(new HostResolverMojo(mock_resolver_.get())); | 164 resolver_.reset(new HostResolverMojo(mock_resolver_.get())); |
| 165 } | 165 } |
| 166 | 166 |
| 167 int Resolve(const HostResolver::RequestInfo& request_info, | 167 int Resolve(const HostResolver::RequestInfo& request_info, |
| 168 AddressList* result) { | 168 AddressList* result) { |
| 169 HostResolver::RequestHandle request_handle = nullptr; | |
| 170 TestCompletionCallback callback; | 169 TestCompletionCallback callback; |
| 171 return callback.GetResult(resolver_->Resolve( | 170 return callback.GetResult(resolver_->Resolve(request_info, DEFAULT_PRIORITY, |
| 172 request_info, DEFAULT_PRIORITY, result, callback.callback(), | 171 result, callback.callback(), |
| 173 &request_handle, BoundNetLog())); | 172 &request_, BoundNetLog())); |
| 174 } | 173 } |
| 175 | 174 |
| 176 std::unique_ptr<MockMojoHostResolver> mock_resolver_; | 175 std::unique_ptr<MockMojoHostResolver> mock_resolver_; |
| 177 | 176 |
| 178 std::unique_ptr<HostResolverMojo> resolver_; | 177 std::unique_ptr<HostResolverMojo> resolver_; |
| 179 | 178 |
| 179 std::unique_ptr<HostResolver::Request> request_; |
| 180 |
| 180 Waiter waiter_; | 181 Waiter waiter_; |
| 181 }; | 182 }; |
| 182 | 183 |
| 183 TEST_F(HostResolverMojoTest, Basic) { | 184 TEST_F(HostResolverMojoTest, Basic) { |
| 184 AddressList address_list; | 185 AddressList address_list; |
| 185 IPAddress address(1, 2, 3, 4); | 186 IPAddress address(1, 2, 3, 4); |
| 186 address_list.push_back(IPEndPoint(address, 12345)); | 187 address_list.push_back(IPEndPoint(address, 12345)); |
| 187 address_list.push_back( | 188 address_list.push_back( |
| 188 IPEndPoint(ConvertIPv4ToIPv4MappedIPv6(address), 12345)); | 189 IPEndPoint(ConvertIPv4ToIPv4MappedIPv6(address), 12345)); |
| 189 mock_resolver_->AddAction(HostResolverAction::ReturnResult(address_list)); | 190 mock_resolver_->AddAction(HostResolverAction::ReturnResult(address_list)); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 HostResolverAction::ReturnError(ERR_NAME_NOT_RESOLVED)); | 248 HostResolverAction::ReturnError(ERR_NAME_NOT_RESOLVED)); |
| 248 HostResolver::RequestInfo request_info1( | 249 HostResolver::RequestInfo request_info1( |
| 249 HostPortPair::FromString("example.com:12345")); | 250 HostPortPair::FromString("example.com:12345")); |
| 250 request_info1.set_address_family(ADDRESS_FAMILY_IPV4); | 251 request_info1.set_address_family(ADDRESS_FAMILY_IPV4); |
| 251 request_info1.set_is_my_ip_address(true); | 252 request_info1.set_is_my_ip_address(true); |
| 252 HostResolver::RequestInfo request_info2( | 253 HostResolver::RequestInfo request_info2( |
| 253 HostPortPair::FromString("example.org:80")); | 254 HostPortPair::FromString("example.org:80")); |
| 254 request_info2.set_address_family(ADDRESS_FAMILY_IPV6); | 255 request_info2.set_address_family(ADDRESS_FAMILY_IPV6); |
| 255 AddressList result1; | 256 AddressList result1; |
| 256 AddressList result2; | 257 AddressList result2; |
| 257 HostResolver::RequestHandle request_handle1 = nullptr; | 258 std::unique_ptr<HostResolver::Request> req1; |
| 258 HostResolver::RequestHandle request_handle2 = nullptr; | 259 std::unique_ptr<HostResolver::Request> req2; |
| 259 TestCompletionCallback callback1; | 260 TestCompletionCallback callback1; |
| 260 TestCompletionCallback callback2; | 261 TestCompletionCallback callback2; |
| 261 ASSERT_EQ(ERR_IO_PENDING, | 262 ASSERT_EQ(ERR_IO_PENDING, |
| 262 resolver_->Resolve(request_info1, DEFAULT_PRIORITY, &result1, | 263 resolver_->Resolve(request_info1, DEFAULT_PRIORITY, &result1, |
| 263 callback1.callback(), &request_handle1, | 264 callback1.callback(), &req1, BoundNetLog())); |
| 264 BoundNetLog())); | |
| 265 ASSERT_EQ(ERR_IO_PENDING, | 265 ASSERT_EQ(ERR_IO_PENDING, |
| 266 resolver_->Resolve(request_info2, DEFAULT_PRIORITY, &result2, | 266 resolver_->Resolve(request_info2, DEFAULT_PRIORITY, &result2, |
| 267 callback2.callback(), &request_handle2, | 267 callback2.callback(), &req2, BoundNetLog())); |
| 268 BoundNetLog())); | |
| 269 EXPECT_THAT(callback1.GetResult(ERR_IO_PENDING), IsOk()); | 268 EXPECT_THAT(callback1.GetResult(ERR_IO_PENDING), IsOk()); |
| 270 EXPECT_THAT(callback2.GetResult(ERR_IO_PENDING), | 269 EXPECT_THAT(callback2.GetResult(ERR_IO_PENDING), |
| 271 IsError(ERR_NAME_NOT_RESOLVED)); | 270 IsError(ERR_NAME_NOT_RESOLVED)); |
| 272 ASSERT_EQ(1u, result1.size()); | 271 ASSERT_EQ(1u, result1.size()); |
| 273 EXPECT_EQ(address_list[0], result1[0]); | 272 EXPECT_EQ(address_list[0], result1[0]); |
| 274 ASSERT_EQ(0u, result2.size()); | 273 ASSERT_EQ(0u, result2.size()); |
| 275 | 274 |
| 276 ASSERT_EQ(2u, mock_resolver_->requests().size()); | 275 ASSERT_EQ(2u, mock_resolver_->requests().size()); |
| 277 interfaces::HostResolverRequestInfo& request1 = | 276 interfaces::HostResolverRequestInfo& request1 = |
| 278 *mock_resolver_->requests()[0]; | 277 *mock_resolver_->requests()[0]; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 | 315 |
| 317 ASSERT_EQ(1u, mock_resolver_->requests().size()); | 316 ASSERT_EQ(1u, mock_resolver_->requests().size()); |
| 318 } | 317 } |
| 319 | 318 |
| 320 TEST_F(HostResolverMojoTest, Cancel) { | 319 TEST_F(HostResolverMojoTest, Cancel) { |
| 321 mock_resolver_->AddAction(HostResolverAction::RetainRequest()); | 320 mock_resolver_->AddAction(HostResolverAction::RetainRequest()); |
| 322 HostResolver::RequestInfo request_info( | 321 HostResolver::RequestInfo request_info( |
| 323 HostPortPair::FromString("example.com:80")); | 322 HostPortPair::FromString("example.com:80")); |
| 324 request_info.set_address_family(ADDRESS_FAMILY_IPV6); | 323 request_info.set_address_family(ADDRESS_FAMILY_IPV6); |
| 325 AddressList result; | 324 AddressList result; |
| 326 HostResolver::RequestHandle request_handle = nullptr; | 325 std::unique_ptr<HostResolver::Request> request_handle; |
| 327 resolver_->Resolve(request_info, DEFAULT_PRIORITY, &result, base::Bind(&Fail), | 326 resolver_->Resolve(request_info, DEFAULT_PRIORITY, &result, base::Bind(&Fail), |
| 328 &request_handle, BoundNetLog()); | 327 &request_handle, BoundNetLog()); |
| 329 resolver_->CancelRequest(request_handle); | 328 request_handle.reset(); |
| 330 waiter_.WaitForEvent(ConnectionErrorSource::REQUEST); | 329 waiter_.WaitForEvent(ConnectionErrorSource::REQUEST); |
| 331 EXPECT_TRUE(result.empty()); | 330 EXPECT_TRUE(result.empty()); |
| 332 | 331 |
| 333 ASSERT_EQ(1u, mock_resolver_->requests().size()); | 332 ASSERT_EQ(1u, mock_resolver_->requests().size()); |
| 334 interfaces::HostResolverRequestInfo& request = *mock_resolver_->requests()[0]; | 333 interfaces::HostResolverRequestInfo& request = *mock_resolver_->requests()[0]; |
| 335 EXPECT_EQ("example.com", request.host.To<std::string>()); | 334 EXPECT_EQ("example.com", request.host.To<std::string>()); |
| 336 EXPECT_EQ(80, request.port); | 335 EXPECT_EQ(80, request.port); |
| 337 EXPECT_EQ(interfaces::AddressFamily::IPV6, request.address_family); | 336 EXPECT_EQ(interfaces::AddressFamily::IPV6, request.address_family); |
| 338 EXPECT_FALSE(request.is_my_ip_address); | 337 EXPECT_FALSE(request.is_my_ip_address); |
| 339 } | 338 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 EXPECT_EQ(ERR_DNS_CACHE_MISS, | 402 EXPECT_EQ(ERR_DNS_CACHE_MISS, |
| 404 resolver_->ResolveFromCache(request_info, &result, BoundNetLog())); | 403 resolver_->ResolveFromCache(request_info, &result, BoundNetLog())); |
| 405 EXPECT_TRUE(result.empty()); | 404 EXPECT_TRUE(result.empty()); |
| 406 } | 405 } |
| 407 | 406 |
| 408 TEST_F(HostResolverMojoTest, GetHostCache) { | 407 TEST_F(HostResolverMojoTest, GetHostCache) { |
| 409 EXPECT_TRUE(resolver_->GetHostCache()); | 408 EXPECT_TRUE(resolver_->GetHostCache()); |
| 410 } | 409 } |
| 411 | 410 |
| 412 } // namespace net | 411 } // namespace net |
| OLD | NEW |