Chromium Code Reviews| 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/url_request/url_request_context_builder.h" | 5 #include "net/url_request/url_request_context_builder.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); | 132 DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); |
| 133 }; | 133 }; |
| 134 | 134 |
| 135 // Define a context class that can self-manage the ownership of its components | 135 // Define a context class that can self-manage the ownership of its components |
| 136 // via a UrlRequestContextStorage object. | 136 // via a UrlRequestContextStorage object. |
| 137 class ContainerURLRequestContext : public URLRequestContext { | 137 class ContainerURLRequestContext : public URLRequestContext { |
| 138 public: | 138 public: |
| 139 explicit ContainerURLRequestContext( | 139 explicit ContainerURLRequestContext( |
| 140 const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner) | 140 const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner) |
| 141 : file_task_runner_(file_task_runner), storage_(this) {} | 141 : file_task_runner_(file_task_runner), storage_(this) {} |
| 142 ~ContainerURLRequestContext() override { AssertNoURLRequests(); } | 142 |
| 143 ~ContainerURLRequestContext() override { | |
| 144 // Shut down the ProxyService, as it may have pending URLRequests using this | |
| 145 // context. | |
| 146 proxy_service()->OnShutdown(); | |
|
eroman
2017/05/16 20:21:20
If this is the destructor for URLRequestContext, i
mmenke
2017/05/17 02:29:58
This is the destructor of the child class, and it
| |
| 147 | |
| 148 AssertNoURLRequests(); | |
| 149 } | |
| 143 | 150 |
| 144 URLRequestContextStorage* storage() { | 151 URLRequestContextStorage* storage() { |
| 145 return &storage_; | 152 return &storage_; |
| 146 } | 153 } |
| 147 | 154 |
| 148 scoped_refptr<base::SingleThreadTaskRunner>& GetFileTaskRunner() { | 155 scoped_refptr<base::SingleThreadTaskRunner>& GetFileTaskRunner() { |
| 149 // Create a new thread to run file tasks, if needed. | 156 // Create a new thread to run file tasks, if needed. |
| 150 if (!file_task_runner_) { | 157 if (!file_task_runner_) { |
| 151 DCHECK(!file_thread_); | 158 DCHECK(!file_thread_); |
| 152 file_thread_.reset(new base::Thread("Network File Thread")); | 159 file_thread_.reset(new base::Thread("Network File Thread")); |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 351 context->set_net_log(net_log_); | 358 context->set_net_log(net_log_); |
| 352 } else { | 359 } else { |
| 353 storage->set_net_log(base::WrapUnique(new NetLog)); | 360 storage->set_net_log(base::WrapUnique(new NetLog)); |
| 354 } | 361 } |
| 355 | 362 |
| 356 if (!host_resolver_) { | 363 if (!host_resolver_) { |
| 357 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); | 364 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); |
| 358 } | 365 } |
| 359 storage->set_host_resolver(std::move(host_resolver_)); | 366 storage->set_host_resolver(std::move(host_resolver_)); |
| 360 | 367 |
| 361 if (!proxy_service_) { | |
| 362 // TODO(willchan): Switch to using this code when | |
| 363 // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. | |
| 364 #if !defined(OS_LINUX) && !defined(OS_ANDROID) | |
| 365 if (!proxy_config_service_) { | |
| 366 proxy_config_service_ = ProxyService::CreateSystemProxyConfigService( | |
| 367 base::ThreadTaskRunnerHandle::Get().get(), | |
| 368 context->GetFileTaskRunner()); | |
| 369 } | |
| 370 #endif // !defined(OS_LINUX) && !defined(OS_ANDROID) | |
| 371 proxy_service_ = ProxyService::CreateUsingSystemProxyResolver( | |
| 372 std::move(proxy_config_service_), | |
| 373 context->net_log()); | |
| 374 } | |
| 375 storage->set_proxy_service(std::move(proxy_service_)); | |
| 376 | |
| 377 storage->set_ssl_config_service(new SSLConfigServiceDefaults); | 368 storage->set_ssl_config_service(new SSLConfigServiceDefaults); |
| 378 | 369 |
| 379 if (!http_auth_handler_factory_) { | 370 if (!http_auth_handler_factory_) { |
| 380 http_auth_handler_factory_ = | 371 http_auth_handler_factory_ = |
| 381 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver()); | 372 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver()); |
| 382 } | 373 } |
| 383 | 374 |
| 384 storage->set_http_auth_handler_factory(std::move(http_auth_handler_factory_)); | 375 storage->set_http_auth_handler_factory(std::move(http_auth_handler_factory_)); |
| 385 | 376 |
| 386 if (cookie_store_set_by_client_) { | 377 if (cookie_store_set_by_client_) { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 433 ct_verifier->AddLogs(ct::CreateLogVerifiersForKnownLogs()); | 424 ct_verifier->AddLogs(ct::CreateLogVerifiersForKnownLogs()); |
| 434 storage->set_cert_transparency_verifier(std::move(ct_verifier)); | 425 storage->set_cert_transparency_verifier(std::move(ct_verifier)); |
| 435 } | 426 } |
| 436 storage->set_ct_policy_enforcer(base::MakeUnique<CTPolicyEnforcer>()); | 427 storage->set_ct_policy_enforcer(base::MakeUnique<CTPolicyEnforcer>()); |
| 437 | 428 |
| 438 if (throttling_enabled_) { | 429 if (throttling_enabled_) { |
| 439 storage->set_throttler_manager( | 430 storage->set_throttler_manager( |
| 440 base::MakeUnique<URLRequestThrottlerManager>()); | 431 base::MakeUnique<URLRequestThrottlerManager>()); |
| 441 } | 432 } |
| 442 | 433 |
| 434 if (!proxy_service_) { | |
| 435 #if !defined(OS_LINUX) && !defined(OS_ANDROID) | |
| 436 // TODO(willchan): Switch to using this code when | |
| 437 // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. | |
| 438 if (!proxy_config_service_) { | |
| 439 proxy_config_service_ = ProxyService::CreateSystemProxyConfigService( | |
| 440 base::ThreadTaskRunnerHandle::Get().get(), | |
| 441 context->GetFileTaskRunner()); | |
| 442 } | |
| 443 #endif // !defined(OS_LINUX) && !defined(OS_ANDROID) | |
| 444 proxy_service_ = | |
| 445 CreateProxyService(std::move(proxy_config_service_), context.get(), | |
| 446 context->host_resolver(), | |
| 447 context->network_delegate(), context->net_log()); | |
| 448 } | |
| 449 storage->set_proxy_service(std::move(proxy_service_)); | |
| 450 | |
| 443 HttpNetworkSession::Params network_session_params; | 451 HttpNetworkSession::Params network_session_params; |
| 444 SetHttpNetworkSessionComponents(context.get(), &network_session_params); | 452 SetHttpNetworkSessionComponents(context.get(), &network_session_params); |
| 445 http_network_session_params_.ConfigureSessionParams(&network_session_params); | 453 http_network_session_params_.ConfigureSessionParams(&network_session_params); |
| 446 | 454 |
| 447 if (proxy_delegate_) { | 455 if (proxy_delegate_) { |
| 448 network_session_params.proxy_delegate = proxy_delegate_.get(); | 456 network_session_params.proxy_delegate = proxy_delegate_.get(); |
| 449 storage->set_proxy_delegate(std::move(proxy_delegate_)); | 457 storage->set_proxy_delegate(std::move(proxy_delegate_)); |
| 450 } | 458 } |
| 451 if (socket_performance_watcher_factory_) { | 459 if (socket_performance_watcher_factory_) { |
| 452 network_session_params.socket_performance_watcher_factory = | 460 network_session_params.socket_performance_watcher_factory = |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 518 std::move(top_job_factory), std::move(*i))); | 526 std::move(top_job_factory), std::move(*i))); |
| 519 } | 527 } |
| 520 url_request_interceptors_.clear(); | 528 url_request_interceptors_.clear(); |
| 521 } | 529 } |
| 522 storage->set_job_factory(std::move(top_job_factory)); | 530 storage->set_job_factory(std::move(top_job_factory)); |
| 523 // TODO(willchan): Support sdch. | 531 // TODO(willchan): Support sdch. |
| 524 | 532 |
| 525 return std::move(context); | 533 return std::move(context); |
| 526 } | 534 } |
| 527 | 535 |
| 536 std::unique_ptr<ProxyService> URLRequestContextBuilder::CreateProxyService( | |
| 537 std::unique_ptr<ProxyConfigService> proxy_config_service, | |
| 538 URLRequestContext* url_request_context, | |
| 539 HostResolver* host_resolver, | |
| 540 NetworkDelegate* network_delegate, | |
| 541 NetLog* net_log) { | |
| 542 return ProxyService::CreateUsingSystemProxyResolver( | |
| 543 std::move(proxy_config_service), net_log); | |
| 544 } | |
| 545 | |
| 528 } // namespace net | 546 } // namespace net |
| OLD | NEW |