Index: chrome/browser/io_thread.h |
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h |
index d3bf4e70f5084e9a7ecc323a829fe66e408253ce..2c8362dd71a7db083945c70d5a43bbec4193aa8c 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(). |