Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: net/url_request/url_request_context_builder.cc

Issue 2881613002: Allow use of Mojo/V8 ProxyResolvers with URLRequestContextBuilder. (Closed)
Patch Set: Merge Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698