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" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/metrics/field_trial.h" | 12 #include "base/metrics/field_trial.h" |
13 #include "base/stl_util-inl.h" | 13 #include "base/stl_util-inl.h" |
14 #include "base/string_number_conversions.h" | 14 #include "base/string_number_conversions.h" |
15 #include "base/string_split.h" | 15 #include "base/string_split.h" |
16 #include "base/string_util.h" | 16 #include "base/string_util.h" |
17 #include "base/threading/thread_restrictions.h" | 17 #include "base/threading/thread_restrictions.h" |
18 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
19 #include "chrome/browser/extensions/extension_event_router_forwarder.h" | 19 #include "chrome/browser/extensions/extension_event_router_forwarder.h" |
20 #include "chrome/browser/net/chrome_network_delegate.h" | 20 #include "chrome/browser/net/chrome_network_delegate.h" |
21 #include "chrome/browser/net/chrome_net_log.h" | 21 #include "chrome/browser/net/chrome_net_log.h" |
22 #include "chrome/browser/net/chrome_url_request_context.h" | 22 #include "chrome/browser/net/chrome_url_request_context.h" |
23 #include "chrome/browser/net/connect_interceptor.h" | 23 #include "chrome/browser/net/connect_interceptor.h" |
24 #include "chrome/browser/net/passive_log_collector.h" | 24 #include "chrome/browser/net/passive_log_collector.h" |
25 #include "chrome/browser/net/predictor_api.h" | 25 #include "chrome/browser/net/predictor_api.h" |
26 #include "chrome/browser/net/pref_proxy_config_service.h" | 26 #include "chrome/browser/net/pref_proxy_config_service.h" |
27 #include "chrome/browser/net/proxy_service_factory.h" | 27 #include "chrome/browser/net/proxy_service_factory.h" |
| 28 #include "chrome/browser/prefs/pref_member.h" |
28 #include "chrome/browser/prefs/pref_service.h" | 29 #include "chrome/browser/prefs/pref_service.h" |
29 #include "chrome/common/chrome_switches.h" | 30 #include "chrome/common/chrome_switches.h" |
30 #include "chrome/common/net/raw_host_resolver_proc.h" | 31 #include "chrome/common/net/raw_host_resolver_proc.h" |
31 #include "chrome/common/net/url_fetcher.h" | 32 #include "chrome/common/net/url_fetcher.h" |
32 #include "chrome/common/pref_names.h" | 33 #include "chrome/common/pref_names.h" |
33 #include "content/browser/browser_thread.h" | 34 #include "content/browser/browser_thread.h" |
34 #include "content/browser/gpu_process_host.h" | 35 #include "content/browser/gpu_process_host.h" |
35 #include "content/browser/in_process_webkit/indexed_db_key_utility_client.h" | 36 #include "content/browser/in_process_webkit/indexed_db_key_utility_client.h" |
36 #include "net/base/cert_verifier.h" | 37 #include "net/base/cert_verifier.h" |
37 #include "net/base/cookie_monster.h" | 38 #include "net/base/cookie_monster.h" |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); | 301 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); |
301 negotiate_disable_cname_lookup_ = local_state->GetBoolean( | 302 negotiate_disable_cname_lookup_ = local_state->GetBoolean( |
302 prefs::kDisableAuthNegotiateCnameLookup); | 303 prefs::kDisableAuthNegotiateCnameLookup); |
303 negotiate_enable_port_ = local_state->GetBoolean( | 304 negotiate_enable_port_ = local_state->GetBoolean( |
304 prefs::kEnableAuthNegotiatePort); | 305 prefs::kEnableAuthNegotiatePort); |
305 auth_server_whitelist_ = local_state->GetString(prefs::kAuthServerWhitelist); | 306 auth_server_whitelist_ = local_state->GetString(prefs::kAuthServerWhitelist); |
306 auth_delegate_whitelist_ = local_state->GetString( | 307 auth_delegate_whitelist_ = local_state->GetString( |
307 prefs::kAuthNegotiateDelegateWhitelist); | 308 prefs::kAuthNegotiateDelegateWhitelist); |
308 gssapi_library_name_ = local_state->GetString(prefs::kGSSAPILibraryName); | 309 gssapi_library_name_ = local_state->GetString(prefs::kGSSAPILibraryName); |
309 pref_proxy_config_tracker_ = new PrefProxyConfigTracker(local_state); | 310 pref_proxy_config_tracker_ = new PrefProxyConfigTracker(local_state); |
| 311 enable_referrers_.reset(new BooleanPrefMember()); |
| 312 enable_referrers_->Init(prefs::kEnableReferrers, local_state, NULL); |
| 313 enable_referrers_->MoveToThread(BrowserThread::IO); |
310 } | 314 } |
311 | 315 |
312 IOThread::~IOThread() { | 316 IOThread::~IOThread() { |
313 if (pref_proxy_config_tracker_) | 317 if (pref_proxy_config_tracker_) |
314 pref_proxy_config_tracker_->DetachFromPrefService(); | 318 pref_proxy_config_tracker_->DetachFromPrefService(); |
315 // We cannot rely on our base class to stop the thread since we want our | 319 // We cannot rely on our base class to stop the thread since we want our |
316 // CleanUp function to run. | 320 // CleanUp function to run. |
317 Stop(); | 321 Stop(); |
318 DCHECK(!globals_); | 322 DCHECK(!globals_); |
319 } | 323 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 | 421 |
418 // Add an observer that will emit network change events to the ChromeNetLog. | 422 // Add an observer that will emit network change events to the ChromeNetLog. |
419 // Assuming NetworkChangeNotifier dispatches in FIFO order, we should be | 423 // Assuming NetworkChangeNotifier dispatches in FIFO order, we should be |
420 // logging the network change before other IO thread consumers respond to it. | 424 // logging the network change before other IO thread consumers respond to it. |
421 network_change_observer_.reset( | 425 network_change_observer_.reset( |
422 new LoggingNetworkChangeObserver(net_log_)); | 426 new LoggingNetworkChangeObserver(net_log_)); |
423 | 427 |
424 globals_->extension_event_router_forwarder = | 428 globals_->extension_event_router_forwarder = |
425 extension_event_router_forwarder_; | 429 extension_event_router_forwarder_; |
426 globals_->system_network_delegate.reset(new ChromeNetworkDelegate( | 430 globals_->system_network_delegate.reset(new ChromeNetworkDelegate( |
427 extension_event_router_forwarder_, Profile::kInvalidProfileId, NULL)); | 431 extension_event_router_forwarder_, |
| 432 Profile::kInvalidProfileId, |
| 433 enable_referrers_.get(), |
| 434 NULL)); |
428 globals_->host_resolver.reset( | 435 globals_->host_resolver.reset( |
429 CreateGlobalHostResolver(net_log_)); | 436 CreateGlobalHostResolver(net_log_)); |
430 globals_->cert_verifier.reset(new net::CertVerifier); | 437 globals_->cert_verifier.reset(new net::CertVerifier); |
431 globals_->dnsrr_resolver.reset(new net::DnsRRResolver); | 438 globals_->dnsrr_resolver.reset(new net::DnsRRResolver); |
432 // TODO(willchan): Use the real SSLConfigService. | 439 // TODO(willchan): Use the real SSLConfigService. |
433 globals_->ssl_config_service = | 440 globals_->ssl_config_service = |
434 net::SSLConfigService::CreateSystemSSLConfigService(); | 441 net::SSLConfigService::CreateSystemSSLConfigService(); |
435 globals_->http_auth_handler_factory.reset(CreateDefaultAuthHandlerFactory( | 442 globals_->http_auth_handler_factory.reset(CreateDefaultAuthHandlerFactory( |
436 globals_->host_resolver.get())); | 443 globals_->host_resolver.get())); |
437 // For the ProxyScriptFetcher, we use a direct ProxyService. | 444 // For the ProxyScriptFetcher, we use a direct ProxyService. |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 // static | 542 // static |
536 void IOThread::RegisterPrefs(PrefService* local_state) { | 543 void IOThread::RegisterPrefs(PrefService* local_state) { |
537 local_state->RegisterStringPref(prefs::kAuthSchemes, | 544 local_state->RegisterStringPref(prefs::kAuthSchemes, |
538 "basic,digest,ntlm,negotiate"); | 545 "basic,digest,ntlm,negotiate"); |
539 local_state->RegisterBooleanPref(prefs::kDisableAuthNegotiateCnameLookup, | 546 local_state->RegisterBooleanPref(prefs::kDisableAuthNegotiateCnameLookup, |
540 false); | 547 false); |
541 local_state->RegisterBooleanPref(prefs::kEnableAuthNegotiatePort, false); | 548 local_state->RegisterBooleanPref(prefs::kEnableAuthNegotiatePort, false); |
542 local_state->RegisterStringPref(prefs::kAuthServerWhitelist, ""); | 549 local_state->RegisterStringPref(prefs::kAuthServerWhitelist, ""); |
543 local_state->RegisterStringPref(prefs::kAuthNegotiateDelegateWhitelist, ""); | 550 local_state->RegisterStringPref(prefs::kAuthNegotiateDelegateWhitelist, ""); |
544 local_state->RegisterStringPref(prefs::kGSSAPILibraryName, ""); | 551 local_state->RegisterStringPref(prefs::kGSSAPILibraryName, ""); |
| 552 local_state->RegisterBooleanPref(prefs::kEnableReferrers, true); |
545 } | 553 } |
546 | 554 |
547 net::HttpAuthHandlerFactory* IOThread::CreateDefaultAuthHandlerFactory( | 555 net::HttpAuthHandlerFactory* IOThread::CreateDefaultAuthHandlerFactory( |
548 net::HostResolver* resolver) { | 556 net::HostResolver* resolver) { |
549 net::HttpAuthFilterWhitelist* auth_filter_default_credentials = NULL; | 557 net::HttpAuthFilterWhitelist* auth_filter_default_credentials = NULL; |
550 if (!auth_server_whitelist_.empty()) { | 558 if (!auth_server_whitelist_.empty()) { |
551 auth_filter_default_credentials = | 559 auth_filter_default_credentials = |
552 new net::HttpAuthFilterWhitelist(auth_server_whitelist_); | 560 new net::HttpAuthFilterWhitelist(auth_server_whitelist_); |
553 } | 561 } |
554 net::HttpAuthFilterWhitelist* auth_filter_delegate = NULL; | 562 net::HttpAuthFilterWhitelist* auth_filter_delegate = NULL; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 system_params.http_auth_handler_factory = | 658 system_params.http_auth_handler_factory = |
651 globals_->http_auth_handler_factory.get(); | 659 globals_->http_auth_handler_factory.get(); |
652 system_params.network_delegate = globals_->system_network_delegate.get(); | 660 system_params.network_delegate = globals_->system_network_delegate.get(); |
653 system_params.net_log = net_log_; | 661 system_params.net_log = net_log_; |
654 globals_->system_http_transaction_factory.reset( | 662 globals_->system_http_transaction_factory.reset( |
655 new net::HttpNetworkLayer( | 663 new net::HttpNetworkLayer( |
656 new net::HttpNetworkSession(system_params))); | 664 new net::HttpNetworkSession(system_params))); |
657 globals_->system_request_context = | 665 globals_->system_request_context = |
658 ConstructSystemRequestContext(globals_, net_log_); | 666 ConstructSystemRequestContext(globals_, net_log_); |
659 } | 667 } |
OLD | NEW |