Chromium Code Reviews| Index: chrome/browser/browser_process_impl.cc |
| diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc |
| index b7d11153c96e25d69122fe0994347bb4ffdfdf4f..3b0d4c180063c3a35ad81c8253564a21c91f015e 100644 |
| --- a/chrome/browser/browser_process_impl.cc |
| +++ b/chrome/browser/browser_process_impl.cc |
| @@ -34,6 +34,8 @@ |
| #include "chrome/browser/metrics/metrics_service.h" |
| #include "chrome/browser/net/chrome_net_log.h" |
| #include "chrome/browser/net/predictor_api.h" |
| +#include "chrome/browser/net/pref_proxy_config_service.h" |
| +#include "chrome/browser/net/proxy_service_factory.h" |
| #include "chrome/browser/net/sdch_dictionary_fetcher.h" |
| #include "chrome/browser/notifications/notification_ui_manager.h" |
| #include "chrome/browser/plugin_data_remover.h" |
| @@ -57,6 +59,7 @@ |
| #include "chrome/common/extensions/extension_resource.h" |
| #include "chrome/common/extensions/extension_l10n_util.h" |
| #include "chrome/common/json_pref_store.h" |
| +#include "chrome/common/net/url_request_context_getter.h" |
| #include "chrome/common/notification_service.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/common/url_constants.h" |
| @@ -89,6 +92,10 @@ static const int kUpdateCheckIntervalHours = 6; |
| static const int kEndSessionTimeoutSeconds = 10; |
| #endif |
| +#if defined(OS_CHROMEOS) |
| +#include "chrome/browser/chromeos/proxy_config_service.h" |
|
kuan
2011/02/18 16:29:31
any reason why u need this file instead of just pr
battre
2011/02/21 17:27:58
Done.
|
| +#endif // defined(OS_CHROMEOS) |
| + |
| BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) |
| : created_resource_dispatcher_host_(false), |
| created_metrics_service_(false), |
| @@ -245,6 +252,12 @@ BrowserProcessImpl::~BrowserProcessImpl() { |
| // on the db thread too. |
| db_thread_.reset(); |
| + // Need to destroy PrefProxyConfigTracker before local state, since it |
| + // caches a pointer to local state. |
| + if (pref_proxy_config_tracker_) |
| + pref_proxy_config_tracker_->DetachFromPrefService(); |
| + pref_proxy_config_tracker_ = NULL; |
| + |
| // At this point, no render process exist and the file, io, db, and |
| // webkit threads in this process have all terminated, so it's safe |
| // to access local state data such as cookies, database, or local storage. |
| @@ -423,6 +436,32 @@ ui::Clipboard* BrowserProcessImpl::clipboard() { |
| return clipboard_.get(); |
| } |
| +PrefProxyConfigTracker* BrowserProcessImpl::pref_proxy_config_tracker() { |
| + DCHECK(CalledOnValidThread()); |
| + if (!created_pref_proxy_config_tracker_) |
| + CreatePrefProxyConfigTracker(); |
| + return pref_proxy_config_tracker_.get(); |
| +} |
| + |
| +scoped_refptr<URLRequestContextGetter> |
| +BrowserProcessImpl::system_request_context() { |
| + DCHECK(CalledOnValidThread()); |
| + if (!created_system_request_context_) |
| + CreateSystemRequestContextGetter(); |
| + return io_thread()->system_url_request_context_getter(); |
| +} |
| + |
| +#if defined(OS_CHROMEOS) |
| +chromeos::ProxyConfigServiceImpl* |
| +BrowserProcessImpl::chromeos_proxy_config_service_impl() { |
| + if (!chromeos_proxy_config_service_impl_) { |
| + chromeos_proxy_config_service_impl_ = |
| + new chromeos::ProxyConfigServiceImpl(); |
| + } |
| + return chromeos_proxy_config_service_impl_; |
| +} |
| +#endif // defined(OS_CHROMEOS) |
| + |
| NotificationUIManager* BrowserProcessImpl::notification_ui_manager() { |
| DCHECK(CalledOnValidThread()); |
| if (!created_notification_ui_manager_) |
| @@ -833,6 +872,27 @@ void BrowserProcessImpl::CreateSafeBrowsingDetectionService() { |
| } |
| } |
| +void BrowserProcessImpl::CreatePrefProxyConfigTracker() { |
|
brettw
2011/02/21 06:22:47
It's not clear to me why this code is in the Brows
battre
2011/02/21 17:27:58
Thanks for nagging. This simplified things signifi
|
| + DCHECK(pref_proxy_config_tracker_.get() == NULL); |
| + created_pref_proxy_config_tracker_ = true; |
| + pref_proxy_config_tracker_ = new PrefProxyConfigTracker(local_state()); |
| +} |
| + |
| +void BrowserProcessImpl::CreateSystemRequestContextGetter() { |
| + DCHECK(!created_system_request_context_); |
| + created_system_request_context_ = true; |
| + |
| + net::ProxyConfigService* proxy_config_service = |
| + ProxyServiceFactory::CreateProxyConfigService( |
| + pref_proxy_config_tracker()); |
| + |
| + // Takes ownership of config_service. |
| + io_thread()->SetSystemProxyConfigService(proxy_config_service); |
| + |
| + // Initialize SystemUrlRequestContextGetter in |io_thread_|. |
| + ignore_result(io_thread()->system_url_request_context_getter()); |
| +} |
| + |
| bool BrowserProcessImpl::IsSafeBrowsingDetectionServiceEnabled() { |
| // The safe browsing client-side detection is enabled only if the switch is |
| // enabled and when safe browsing related stats is allowed to be collected. |