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/proxy/proxy_resolver_factory_mojo.h" | 5 #include "net/proxy/proxy_resolver_factory_mojo.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 #include <map> | 8 #include <map> |
9 #include <queue> | 9 #include <queue> |
10 #include <string> | 10 #include <string> |
| 11 #include <utility> |
11 #include <vector> | 12 #include <vector> |
12 | 13 |
13 #include "base/bind.h" | 14 #include "base/bind.h" |
14 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
15 #include "base/run_loop.h" | 16 #include "base/run_loop.h" |
16 #include "base/stl_util.h" | 17 #include "base/stl_util.h" |
17 #include "base/values.h" | 18 #include "base/values.h" |
18 #include "mojo/common/common_type_converters.h" | 19 #include "mojo/common/common_type_converters.h" |
19 #include "mojo/public/cpp/bindings/binding.h" | 20 #include "mojo/public/cpp/bindings/binding.h" |
20 #include "net/base/load_states.h" | 21 #include "net/base/load_states.h" |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 } | 232 } |
232 | 233 |
233 void MockMojoProxyResolver::ClearBlockedClients() { | 234 void MockMojoProxyResolver::ClearBlockedClients() { |
234 blocked_clients_.clear(); | 235 blocked_clients_.clear(); |
235 } | 236 } |
236 | 237 |
237 void MockMojoProxyResolver::AddConnection( | 238 void MockMojoProxyResolver::AddConnection( |
238 mojo::InterfaceRequest<interfaces::ProxyResolver> req) { | 239 mojo::InterfaceRequest<interfaces::ProxyResolver> req) { |
239 if (binding_.is_bound()) | 240 if (binding_.is_bound()) |
240 binding_.Close(); | 241 binding_.Close(); |
241 binding_.Bind(req.Pass()); | 242 binding_.Bind(std::move(req)); |
242 } | 243 } |
243 | 244 |
244 void MockMojoProxyResolver::GetProxyForUrl( | 245 void MockMojoProxyResolver::GetProxyForUrl( |
245 const mojo::String& url, | 246 const mojo::String& url, |
246 interfaces::ProxyResolverRequestClientPtr client) { | 247 interfaces::ProxyResolverRequestClientPtr client) { |
247 ASSERT_FALSE(get_proxy_actions_.empty()); | 248 ASSERT_FALSE(get_proxy_actions_.empty()); |
248 GetProxyForUrlAction action = get_proxy_actions_.front(); | 249 GetProxyForUrlAction action = get_proxy_actions_.front(); |
249 get_proxy_actions_.pop(); | 250 get_proxy_actions_.pop(); |
250 | 251 |
251 EXPECT_EQ(action.expected_url.spec(), url.To<std::string>()); | 252 EXPECT_EQ(action.expected_url.spec(), url.To<std::string>()); |
252 client->Alert(url); | 253 client->Alert(url); |
253 client->OnError(12345, url); | 254 client->OnError(12345, url); |
254 switch (action.action) { | 255 switch (action.action) { |
255 case GetProxyForUrlAction::COMPLETE: { | 256 case GetProxyForUrlAction::COMPLETE: { |
256 client->ReportResult(action.error, action.proxy_servers.Pass()); | 257 client->ReportResult(action.error, std::move(action.proxy_servers)); |
257 break; | 258 break; |
258 } | 259 } |
259 case GetProxyForUrlAction::DROP: { | 260 case GetProxyForUrlAction::DROP: { |
260 client.reset(); | 261 client.reset(); |
261 break; | 262 break; |
262 } | 263 } |
263 case GetProxyForUrlAction::DISCONNECT: { | 264 case GetProxyForUrlAction::DISCONNECT: { |
264 binding_.Close(); | 265 binding_.Close(); |
265 break; | 266 break; |
266 } | 267 } |
267 case GetProxyForUrlAction::WAIT_FOR_CLIENT_DISCONNECT: { | 268 case GetProxyForUrlAction::WAIT_FOR_CLIENT_DISCONNECT: { |
268 ASSERT_FALSE(client.WaitForIncomingResponse()); | 269 ASSERT_FALSE(client.WaitForIncomingResponse()); |
269 break; | 270 break; |
270 } | 271 } |
271 case GetProxyForUrlAction::MAKE_DNS_REQUEST: { | 272 case GetProxyForUrlAction::MAKE_DNS_REQUEST: { |
272 interfaces::HostResolverRequestInfoPtr request( | 273 interfaces::HostResolverRequestInfoPtr request( |
273 interfaces::HostResolverRequestInfo::New()); | 274 interfaces::HostResolverRequestInfo::New()); |
274 request->host = url; | 275 request->host = url; |
275 request->port = 12345; | 276 request->port = 12345; |
276 interfaces::HostResolverRequestClientPtr dns_client; | 277 interfaces::HostResolverRequestClientPtr dns_client; |
277 mojo::GetProxy(&dns_client); | 278 mojo::GetProxy(&dns_client); |
278 client->ResolveDns(request.Pass(), dns_client.Pass()); | 279 client->ResolveDns(std::move(request), std::move(dns_client)); |
279 blocked_clients_.push_back(make_scoped_ptr( | 280 blocked_clients_.push_back(make_scoped_ptr( |
280 new interfaces::ProxyResolverRequestClientPtr(std::move(client)))); | 281 new interfaces::ProxyResolverRequestClientPtr(std::move(client)))); |
281 break; | 282 break; |
282 } | 283 } |
283 } | 284 } |
284 WakeWaiter(); | 285 WakeWaiter(); |
285 } | 286 } |
286 | 287 |
287 class Request { | 288 class Request { |
288 public: | 289 public: |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 std::vector<scoped_ptr<interfaces::ProxyResolverFactoryRequestClientPtr>> | 356 std::vector<scoped_ptr<interfaces::ProxyResolverFactoryRequestClientPtr>> |
356 blocked_clients_; | 357 blocked_clients_; |
357 std::vector<scoped_ptr<mojo::InterfaceRequest<interfaces::ProxyResolver>>> | 358 std::vector<scoped_ptr<mojo::InterfaceRequest<interfaces::ProxyResolver>>> |
358 blocked_resolver_requests_; | 359 blocked_resolver_requests_; |
359 mojo::Binding<interfaces::ProxyResolverFactory> binding_; | 360 mojo::Binding<interfaces::ProxyResolverFactory> binding_; |
360 }; | 361 }; |
361 | 362 |
362 MockMojoProxyResolverFactory::MockMojoProxyResolverFactory( | 363 MockMojoProxyResolverFactory::MockMojoProxyResolverFactory( |
363 MockMojoProxyResolver* resolver, | 364 MockMojoProxyResolver* resolver, |
364 mojo::InterfaceRequest<interfaces::ProxyResolverFactory> req) | 365 mojo::InterfaceRequest<interfaces::ProxyResolverFactory> req) |
365 : resolver_(resolver), binding_(this, req.Pass()) { | 366 : resolver_(resolver), binding_(this, std::move(req)) {} |
366 } | |
367 | 367 |
368 MockMojoProxyResolverFactory::~MockMojoProxyResolverFactory() { | 368 MockMojoProxyResolverFactory::~MockMojoProxyResolverFactory() { |
369 EXPECT_TRUE(create_resolver_actions_.empty()) | 369 EXPECT_TRUE(create_resolver_actions_.empty()) |
370 << "Actions remaining: " << create_resolver_actions_.size(); | 370 << "Actions remaining: " << create_resolver_actions_.size(); |
371 } | 371 } |
372 | 372 |
373 void MockMojoProxyResolverFactory::AddCreateProxyResolverAction( | 373 void MockMojoProxyResolverFactory::AddCreateProxyResolverAction( |
374 CreateProxyResolverAction action) { | 374 CreateProxyResolverAction action) { |
375 create_resolver_actions_.push(action); | 375 create_resolver_actions_.push(action); |
376 } | 376 } |
(...skipping 21 matching lines...) Expand all Loading... |
398 ASSERT_FALSE(create_resolver_actions_.empty()); | 398 ASSERT_FALSE(create_resolver_actions_.empty()); |
399 CreateProxyResolverAction action = create_resolver_actions_.front(); | 399 CreateProxyResolverAction action = create_resolver_actions_.front(); |
400 create_resolver_actions_.pop(); | 400 create_resolver_actions_.pop(); |
401 | 401 |
402 EXPECT_EQ(action.expected_pac_script, pac_script.To<std::string>()); | 402 EXPECT_EQ(action.expected_pac_script, pac_script.To<std::string>()); |
403 client->Alert(pac_script); | 403 client->Alert(pac_script); |
404 client->OnError(12345, pac_script); | 404 client->OnError(12345, pac_script); |
405 switch (action.action) { | 405 switch (action.action) { |
406 case CreateProxyResolverAction::COMPLETE: { | 406 case CreateProxyResolverAction::COMPLETE: { |
407 if (action.error == OK) | 407 if (action.error == OK) |
408 resolver_->AddConnection(request.Pass()); | 408 resolver_->AddConnection(std::move(request)); |
409 client->ReportResult(action.error); | 409 client->ReportResult(action.error); |
410 break; | 410 break; |
411 } | 411 } |
412 case CreateProxyResolverAction::DROP_CLIENT: { | 412 case CreateProxyResolverAction::DROP_CLIENT: { |
413 // Save |request| so its pipe isn't closed. | 413 // Save |request| so its pipe isn't closed. |
414 blocked_resolver_requests_.push_back( | 414 blocked_resolver_requests_.push_back( |
415 make_scoped_ptr(new mojo::InterfaceRequest<interfaces::ProxyResolver>( | 415 make_scoped_ptr(new mojo::InterfaceRequest<interfaces::ProxyResolver>( |
416 std::move(request)))); | 416 std::move(request)))); |
417 break; | 417 break; |
418 } | 418 } |
(...skipping 12 matching lines...) Expand all Loading... |
431 ASSERT_FALSE(client.WaitForIncomingResponse()); | 431 ASSERT_FALSE(client.WaitForIncomingResponse()); |
432 break; | 432 break; |
433 } | 433 } |
434 case CreateProxyResolverAction::MAKE_DNS_REQUEST: { | 434 case CreateProxyResolverAction::MAKE_DNS_REQUEST: { |
435 interfaces::HostResolverRequestInfoPtr request( | 435 interfaces::HostResolverRequestInfoPtr request( |
436 interfaces::HostResolverRequestInfo::New()); | 436 interfaces::HostResolverRequestInfo::New()); |
437 request->host = pac_script; | 437 request->host = pac_script; |
438 request->port = 12345; | 438 request->port = 12345; |
439 interfaces::HostResolverRequestClientPtr dns_client; | 439 interfaces::HostResolverRequestClientPtr dns_client; |
440 mojo::GetProxy(&dns_client); | 440 mojo::GetProxy(&dns_client); |
441 client->ResolveDns(request.Pass(), std::move(dns_client)); | 441 client->ResolveDns(std::move(request), std::move(dns_client)); |
442 blocked_clients_.push_back( | 442 blocked_clients_.push_back( |
443 make_scoped_ptr(new interfaces::ProxyResolverFactoryRequestClientPtr( | 443 make_scoped_ptr(new interfaces::ProxyResolverFactoryRequestClientPtr( |
444 std::move(client)))); | 444 std::move(client)))); |
445 break; | 445 break; |
446 } | 446 } |
447 } | 447 } |
448 WakeWaiter(); | 448 WakeWaiter(); |
449 } | 449 } |
450 | 450 |
451 void DeleteResolverFactoryRequestCallback( | 451 void DeleteResolverFactoryRequestCallback( |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 } | 519 } |
520 | 520 |
521 scoped_ptr<Request> MakeRequest(const GURL& url) { | 521 scoped_ptr<Request> MakeRequest(const GURL& url) { |
522 return make_scoped_ptr(new Request(proxy_resolver_mojo_.get(), url)); | 522 return make_scoped_ptr(new Request(proxy_resolver_mojo_.get(), url)); |
523 } | 523 } |
524 | 524 |
525 scoped_ptr<base::ScopedClosureRunner> CreateResolver( | 525 scoped_ptr<base::ScopedClosureRunner> CreateResolver( |
526 const mojo::String& pac_script, | 526 const mojo::String& pac_script, |
527 mojo::InterfaceRequest<interfaces::ProxyResolver> req, | 527 mojo::InterfaceRequest<interfaces::ProxyResolver> req, |
528 interfaces::ProxyResolverFactoryRequestClientPtr client) override { | 528 interfaces::ProxyResolverFactoryRequestClientPtr client) override { |
529 factory_ptr_->CreateResolver(pac_script, req.Pass(), client.Pass()); | 529 factory_ptr_->CreateResolver(pac_script, std::move(req), std::move(client)); |
530 return make_scoped_ptr( | 530 return make_scoped_ptr( |
531 new base::ScopedClosureRunner(on_delete_callback_.closure())); | 531 new base::ScopedClosureRunner(on_delete_callback_.closure())); |
532 } | 532 } |
533 | 533 |
534 mojo::Array<interfaces::ProxyServerPtr> ProxyServersFromPacString( | 534 mojo::Array<interfaces::ProxyServerPtr> ProxyServersFromPacString( |
535 const std::string& pac_string) { | 535 const std::string& pac_string) { |
536 ProxyInfo proxy_info; | 536 ProxyInfo proxy_info; |
537 proxy_info.UsePacString(pac_string); | 537 proxy_info.UsePacString(pac_string); |
538 | 538 |
539 return mojo::Array<interfaces::ProxyServerPtr>::From( | 539 return mojo::Array<interfaces::ProxyServerPtr>::From( |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 mock_proxy_resolver_.ClearBlockedClients(); | 887 mock_proxy_resolver_.ClearBlockedClients(); |
888 request->WaitForResult(); | 888 request->WaitForResult(); |
889 } | 889 } |
890 | 890 |
891 TEST_F(ProxyResolverFactoryMojoTest, DeleteResolver) { | 891 TEST_F(ProxyResolverFactoryMojoTest, DeleteResolver) { |
892 CreateProxyResolver(); | 892 CreateProxyResolver(); |
893 proxy_resolver_mojo_.reset(); | 893 proxy_resolver_mojo_.reset(); |
894 on_delete_callback_.WaitForResult(); | 894 on_delete_callback_.WaitForResult(); |
895 } | 895 } |
896 } // namespace net | 896 } // namespace net |
OLD | NEW |