OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/io_thread.h" | 5 #include "chrome/browser/io_thread.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/leak_tracker.h" | 10 #include "base/debug/leak_tracker.h" |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 IOThread::Globals::~Globals() {} | 331 IOThread::Globals::~Globals() {} |
332 | 332 |
333 IOThread::Globals::MediaGlobals::MediaGlobals() {} | 333 IOThread::Globals::MediaGlobals::MediaGlobals() {} |
334 | 334 |
335 IOThread::Globals::MediaGlobals::~MediaGlobals() {} | 335 IOThread::Globals::MediaGlobals::~MediaGlobals() {} |
336 | 336 |
337 // |local_state| is passed in explicitly in order to (1) reduce implicit | 337 // |local_state| is passed in explicitly in order to (1) reduce implicit |
338 // dependencies and (2) make IOThread more flexible for testing. | 338 // dependencies and (2) make IOThread more flexible for testing. |
339 IOThread::IOThread( | 339 IOThread::IOThread( |
340 PrefService* local_state, | 340 PrefService* local_state, |
| 341 SpdyConfigServiceManager* spdy_config_service_manager, |
341 ChromeNetLog* net_log, | 342 ChromeNetLog* net_log, |
342 ExtensionEventRouterForwarder* extension_event_router_forwarder) | 343 ExtensionEventRouterForwarder* extension_event_router_forwarder) |
343 : BrowserProcessSubThread(BrowserThread::IO), | 344 : BrowserProcessSubThread(BrowserThread::IO), |
344 net_log_(net_log), | 345 net_log_(net_log), |
345 extension_event_router_forwarder_(extension_event_router_forwarder), | 346 extension_event_router_forwarder_(extension_event_router_forwarder), |
346 globals_(NULL), | 347 globals_(NULL), |
347 speculative_interceptor_(NULL), | 348 speculative_interceptor_(NULL), |
348 predictor_(NULL), | 349 predictor_(NULL), |
349 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { | 350 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { |
350 // We call RegisterPrefs() here (instead of inside browser_prefs.cc) to make | 351 // We call RegisterPrefs() here (instead of inside browser_prefs.cc) to make |
351 // sure that everything is initialized in the right order. | 352 // sure that everything is initialized in the right order. |
352 RegisterPrefs(local_state); | 353 RegisterPrefs(local_state); |
353 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); | 354 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); |
354 negotiate_disable_cname_lookup_ = local_state->GetBoolean( | 355 negotiate_disable_cname_lookup_ = local_state->GetBoolean( |
355 prefs::kDisableAuthNegotiateCnameLookup); | 356 prefs::kDisableAuthNegotiateCnameLookup); |
356 negotiate_enable_port_ = local_state->GetBoolean( | 357 negotiate_enable_port_ = local_state->GetBoolean( |
357 prefs::kEnableAuthNegotiatePort); | 358 prefs::kEnableAuthNegotiatePort); |
358 auth_server_whitelist_ = local_state->GetString(prefs::kAuthServerWhitelist); | 359 auth_server_whitelist_ = local_state->GetString(prefs::kAuthServerWhitelist); |
359 auth_delegate_whitelist_ = local_state->GetString( | 360 auth_delegate_whitelist_ = local_state->GetString( |
360 prefs::kAuthNegotiateDelegateWhitelist); | 361 prefs::kAuthNegotiateDelegateWhitelist); |
361 gssapi_library_name_ = local_state->GetString(prefs::kGSSAPILibraryName); | 362 gssapi_library_name_ = local_state->GetString(prefs::kGSSAPILibraryName); |
362 pref_proxy_config_tracker_ = new PrefProxyConfigTracker(local_state); | 363 pref_proxy_config_tracker_ = new PrefProxyConfigTracker(local_state); |
363 ChromeNetworkDelegate::InitializeReferrersEnabled(&system_enable_referrers_, | 364 ChromeNetworkDelegate::InitializeReferrersEnabled(&system_enable_referrers_, |
364 local_state); | 365 local_state); |
| 366 spdy_config_service_manager_ = spdy_config_service_manager; |
365 ssl_config_service_manager_.reset( | 367 ssl_config_service_manager_.reset( |
366 SSLConfigServiceManager::CreateDefaultManager(local_state)); | 368 SSLConfigServiceManager::CreateDefaultManager(local_state)); |
367 MessageLoop::current()->PostTask(FROM_HERE, | 369 MessageLoop::current()->PostTask(FROM_HERE, |
368 method_factory_.NewRunnableMethod( | 370 method_factory_.NewRunnableMethod( |
369 &IOThread::InitSystemRequestContext)); | 371 &IOThread::InitSystemRequestContext)); |
370 } | 372 } |
371 | 373 |
372 IOThread::~IOThread() { | 374 IOThread::~IOThread() { |
373 if (pref_proxy_config_tracker_) | 375 if (pref_proxy_config_tracker_) |
374 pref_proxy_config_tracker_->DetachFromPrefService(); | 376 pref_proxy_config_tracker_->DetachFromPrefService(); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 extension_event_router_forwarder_; | 461 extension_event_router_forwarder_; |
460 globals_->system_network_delegate.reset(new ChromeNetworkDelegate( | 462 globals_->system_network_delegate.reset(new ChromeNetworkDelegate( |
461 extension_event_router_forwarder_, | 463 extension_event_router_forwarder_, |
462 NULL, | 464 NULL, |
463 NULL, | 465 NULL, |
464 &system_enable_referrers_)); | 466 &system_enable_referrers_)); |
465 globals_->host_resolver.reset( | 467 globals_->host_resolver.reset( |
466 CreateGlobalHostResolver(net_log_)); | 468 CreateGlobalHostResolver(net_log_)); |
467 globals_->cert_verifier.reset(new net::CertVerifier); | 469 globals_->cert_verifier.reset(new net::CertVerifier); |
468 globals_->dnsrr_resolver.reset(new net::DnsRRResolver); | 470 globals_->dnsrr_resolver.reset(new net::DnsRRResolver); |
| 471 globals_->spdy_config_service = GetSpdyConfigService(); |
469 globals_->ssl_config_service = GetSSLConfigService(); | 472 globals_->ssl_config_service = GetSSLConfigService(); |
470 globals_->http_auth_handler_factory.reset(CreateDefaultAuthHandlerFactory( | 473 globals_->http_auth_handler_factory.reset(CreateDefaultAuthHandlerFactory( |
471 globals_->host_resolver.get())); | 474 globals_->host_resolver.get())); |
472 // For the ProxyScriptFetcher, we use a direct ProxyService. | 475 // For the ProxyScriptFetcher, we use a direct ProxyService. |
473 globals_->proxy_script_fetcher_proxy_service.reset( | 476 globals_->proxy_script_fetcher_proxy_service.reset( |
474 net::ProxyService::CreateDirectWithNetLog(net_log_)); | 477 net::ProxyService::CreateDirectWithNetLog(net_log_)); |
475 // In-memory cookie store. | 478 // In-memory cookie store. |
476 globals_->system_cookie_store = new net::CookieMonster(NULL, NULL); | 479 globals_->system_cookie_store = new net::CookieMonster(NULL, NULL); |
477 // In-memory origin-bound cert store. | 480 // In-memory origin-bound cert store. |
478 globals_->system_origin_bound_cert_service.reset( | 481 globals_->system_origin_bound_cert_service.reset( |
479 new net::OriginBoundCertService( | 482 new net::OriginBoundCertService( |
480 new net::DefaultOriginBoundCertStore(NULL))); | 483 new net::DefaultOriginBoundCertStore(NULL))); |
481 net::HttpNetworkSession::Params session_params; | 484 net::HttpNetworkSession::Params session_params; |
482 session_params.host_resolver = globals_->host_resolver.get(); | 485 session_params.host_resolver = globals_->host_resolver.get(); |
483 session_params.cert_verifier = globals_->cert_verifier.get(); | 486 session_params.cert_verifier = globals_->cert_verifier.get(); |
484 session_params.origin_bound_cert_service = | 487 session_params.origin_bound_cert_service = |
485 globals_->system_origin_bound_cert_service.get(); | 488 globals_->system_origin_bound_cert_service.get(); |
486 session_params.proxy_service = | 489 session_params.proxy_service = |
487 globals_->proxy_script_fetcher_proxy_service.get(); | 490 globals_->proxy_script_fetcher_proxy_service.get(); |
488 session_params.http_auth_handler_factory = | 491 session_params.http_auth_handler_factory = |
489 globals_->http_auth_handler_factory.get(); | 492 globals_->http_auth_handler_factory.get(); |
490 session_params.network_delegate = globals_->system_network_delegate.get(); | 493 session_params.network_delegate = globals_->system_network_delegate.get(); |
491 session_params.net_log = net_log_; | 494 session_params.net_log = net_log_; |
| 495 session_params.spdy_config_service = globals_->spdy_config_service; |
492 session_params.ssl_config_service = globals_->ssl_config_service; | 496 session_params.ssl_config_service = globals_->ssl_config_service; |
493 scoped_refptr<net::HttpNetworkSession> network_session( | 497 scoped_refptr<net::HttpNetworkSession> network_session( |
494 new net::HttpNetworkSession(session_params)); | 498 new net::HttpNetworkSession(session_params)); |
495 globals_->proxy_script_fetcher_http_transaction_factory.reset( | 499 globals_->proxy_script_fetcher_http_transaction_factory.reset( |
496 new net::HttpNetworkLayer(network_session)); | 500 new net::HttpNetworkLayer(network_session)); |
497 globals_->proxy_script_fetcher_ftp_transaction_factory.reset( | 501 globals_->proxy_script_fetcher_ftp_transaction_factory.reset( |
498 new net::FtpNetworkLayer(globals_->host_resolver.get())); | 502 new net::FtpNetworkLayer(globals_->host_resolver.get())); |
499 | 503 |
500 globals_->proxy_script_fetcher_context = | 504 globals_->proxy_script_fetcher_context = |
501 ConstructProxyScriptFetcherContext(globals_, net_log_); | 505 ConstructProxyScriptFetcherContext(globals_, net_log_); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 651 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
648 | 652 |
649 if (globals_->host_resolver->GetAsHostResolverImpl()) { | 653 if (globals_->host_resolver->GetAsHostResolverImpl()) { |
650 net::HostCache* host_cache = | 654 net::HostCache* host_cache = |
651 globals_->host_resolver.get()->GetAsHostResolverImpl()->cache(); | 655 globals_->host_resolver.get()->GetAsHostResolverImpl()->cache(); |
652 if (host_cache) | 656 if (host_cache) |
653 host_cache->clear(); | 657 host_cache->clear(); |
654 } | 658 } |
655 } | 659 } |
656 | 660 |
| 661 net::SpdyConfigService* IOThread::GetSpdyConfigService() { |
| 662 return spdy_config_service_manager_->Get(); |
| 663 } |
| 664 |
657 net::SSLConfigService* IOThread::GetSSLConfigService() { | 665 net::SSLConfigService* IOThread::GetSSLConfigService() { |
658 return ssl_config_service_manager_->Get(); | 666 return ssl_config_service_manager_->Get(); |
659 } | 667 } |
660 | 668 |
661 void IOThread::InitSystemRequestContext() { | 669 void IOThread::InitSystemRequestContext() { |
662 if (system_url_request_context_getter_) | 670 if (system_url_request_context_getter_) |
663 return; | 671 return; |
664 // If we're in unit_tests, IOThread may not be run. | 672 // If we're in unit_tests, IOThread may not be run. |
665 if (!message_loop()) | 673 if (!message_loop()) |
666 return; | 674 return; |
(...skipping 23 matching lines...) Expand all Loading... |
690 command_line)); | 698 command_line)); |
691 net::HttpNetworkSession::Params system_params; | 699 net::HttpNetworkSession::Params system_params; |
692 system_params.host_resolver = globals_->host_resolver.get(); | 700 system_params.host_resolver = globals_->host_resolver.get(); |
693 system_params.cert_verifier = globals_->cert_verifier.get(); | 701 system_params.cert_verifier = globals_->cert_verifier.get(); |
694 system_params.origin_bound_cert_service = | 702 system_params.origin_bound_cert_service = |
695 globals_->system_origin_bound_cert_service.get(); | 703 globals_->system_origin_bound_cert_service.get(); |
696 system_params.dnsrr_resolver = globals_->dnsrr_resolver.get(); | 704 system_params.dnsrr_resolver = globals_->dnsrr_resolver.get(); |
697 system_params.dns_cert_checker = NULL; | 705 system_params.dns_cert_checker = NULL; |
698 system_params.ssl_host_info_factory = NULL; | 706 system_params.ssl_host_info_factory = NULL; |
699 system_params.proxy_service = globals_->system_proxy_service.get(); | 707 system_params.proxy_service = globals_->system_proxy_service.get(); |
| 708 system_params.spdy_config_service = globals_->spdy_config_service.get(); |
700 system_params.ssl_config_service = globals_->ssl_config_service.get(); | 709 system_params.ssl_config_service = globals_->ssl_config_service.get(); |
701 system_params.http_auth_handler_factory = | 710 system_params.http_auth_handler_factory = |
702 globals_->http_auth_handler_factory.get(); | 711 globals_->http_auth_handler_factory.get(); |
703 system_params.network_delegate = globals_->system_network_delegate.get(); | 712 system_params.network_delegate = globals_->system_network_delegate.get(); |
704 system_params.net_log = net_log_; | 713 system_params.net_log = net_log_; |
705 globals_->system_http_transaction_factory.reset( | 714 globals_->system_http_transaction_factory.reset( |
706 new net::HttpNetworkLayer( | 715 new net::HttpNetworkLayer( |
707 new net::HttpNetworkSession(system_params))); | 716 new net::HttpNetworkSession(system_params))); |
708 globals_->system_ftp_transaction_factory.reset( | 717 globals_->system_ftp_transaction_factory.reset( |
709 new net::FtpNetworkLayer(globals_->host_resolver.get())); | 718 new net::FtpNetworkLayer(globals_->host_resolver.get())); |
710 globals_->system_request_context = | 719 globals_->system_request_context = |
711 ConstructSystemRequestContext(globals_, net_log_); | 720 ConstructSystemRequestContext(globals_, net_log_); |
712 } | 721 } |
OLD | NEW |