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