| 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 |