summaryrefslogtreecommitdiffstats
path: root/chrome/browser/io_thread.h
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-15 17:26:54 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-15 17:26:54 +0000
commitd2d63be523cbd238e11e160d904bcb351fdfb9e8 (patch)
treecb4162162d4586ca4e9fd974f9f3744ba78f1bae /chrome/browser/io_thread.h
parent0997dbb61cacad042c452b37e03d4de5a0ed82bb (diff)
downloadchromium_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.h27
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().