Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4259)

Unified Diff: chrome/browser/browser_process_impl.cc

Issue 6292017: Extended: Add "system" URLRequestContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Next iteration Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698