diff options
author | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-15 17:26:54 +0000 |
---|---|---|
committer | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-15 17:26:54 +0000 |
commit | d2d63be523cbd238e11e160d904bcb351fdfb9e8 (patch) | |
tree | cb4162162d4586ca4e9fd974f9f3744ba78f1bae /chrome/browser/io_thread.h | |
parent | 0997dbb61cacad042c452b37e03d4de5a0ed82bb (diff) | |
download | chromium_src-d2d63be523cbd238e11e160d904bcb351fdfb9e8.zip chromium_src-d2d63be523cbd238e11e160d904bcb351fdfb9e8.tar.gz chromium_src-d2d63be523cbd238e11e160d904bcb351fdfb9e8.tar.bz2 |
Extended: Add "system" URLRequestContext (not ready for use!)
This is an extension of http://codereview.chromium.org/6280018 that provides a proxy configuration which respects command line parameters and policies
BUG=67232,70732
TEST=Start chrome, observe two PROXY_CONFIG_CHANGED events in about:net-internals (if you are on a corporate network with PAC configurations), observe that everything behaves as usual. In particular the https://www.google.com/searchdomaincheck?format=domain&type=chrome request should not fail as it uses the new system URLRequestContext.
Review URL: http://codereview.chromium.org/6292017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78228 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/io_thread.h')
-rw-r--r-- | chrome/browser/io_thread.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h index d3bf4e7..2c8362d 100644 --- a/chrome/browser/io_thread.h +++ b/chrome/browser/io_thread.h @@ -19,7 +19,10 @@ class ChromeNetLog; class ChromeURLRequestContextGetter; class ExtensionEventRouterForwarder; class ListValue; +class PrefProxyConfigTracker; class PrefService; +class SystemURLRequestContextGetter; +class URLRequestContextGetter; namespace chrome_browser_net { class ConnectInterceptor; @@ -33,6 +36,7 @@ class HostResolver; class HttpAuthHandlerFactory; class HttpTransactionFactory; class NetworkDelegate; +class ProxyConfigService; class ProxyScriptFetcher; class ProxyService; class SSLConfigService; @@ -58,6 +62,12 @@ class IOThread : public BrowserProcessSubThread { proxy_script_fetcher_http_transaction_factory; scoped_ptr<net::URLSecurityManager> url_security_manager; scoped_refptr<net::URLRequestContext> proxy_script_fetcher_context; + scoped_ptr<net::HttpTransactionFactory> system_http_transaction_factory; + scoped_refptr<net::ProxyService> system_proxy_service; + // NOTE(willchan): This request context is unusable until a system + // SSLConfigService is provided that doesn't rely on + // Profiles. Do NOT use this yet. + scoped_refptr<net::URLRequestContext> system_request_context; scoped_refptr<ExtensionEventRouterForwarder> extension_event_router_forwarder; }; @@ -104,6 +114,9 @@ class IOThread : public BrowserProcessSubThread { // Handles changing to On The Record mode, discarding confidential data. void ChangedToOnTheRecord(); + // Returns a getter for the URLRequestContext. Only called on the UI thread. + URLRequestContextGetter* system_url_request_context_getter(); + // Clear all network stack history, including the host cache, as well as // speculative data about subresources of visited sites, and startup-time // navigations. @@ -114,11 +127,19 @@ class IOThread : public BrowserProcessSubThread { virtual void CleanUp(); private: + // Provide SystemURLRequestContextGetter with access to + // InitSystemRequestContext(). + friend class SystemURLRequestContextGetter; + static void RegisterPrefs(PrefService* local_state); net::HttpAuthHandlerFactory* CreateDefaultAuthHandlerFactory( net::HostResolver* resolver); + // Lazy initialization of system request context for + // SystemURLRequestContextGetter. To be called on IO thread. + void InitSystemRequestContext(); + void InitNetworkPredictorOnIOThread( bool prefetching_enabled, base::TimeDelta max_dns_queue_delay, @@ -174,6 +195,12 @@ class IOThread : public BrowserProcessSubThread { chrome_browser_net::ConnectInterceptor* speculative_interceptor_; chrome_browser_net::Predictor* predictor_; + scoped_ptr<net::ProxyConfigService> system_proxy_config_service_; + + scoped_refptr<PrefProxyConfigTracker> pref_proxy_config_tracker_; + + scoped_refptr<URLRequestContextGetter> system_url_request_context_getter_; + // Keeps track of all live ChromeURLRequestContextGetters, so the // ChromeURLRequestContexts can be released during // IOThread::CleanUp(). |