diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-04 00:24:51 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-04 00:24:51 +0000 |
commit | d13c32787737f1822202802f062c41c38b90e5f5 (patch) | |
tree | f616a6dcf08fee7cc6f5c023e53be4fa501e9ef2 /net/http | |
parent | 9becad4ad1adcd4e4339b45f8b90d299fd968a08 (diff) | |
download | chromium_src-d13c32787737f1822202802f062c41c38b90e5f5.zip chromium_src-d13c32787737f1822202802f062c41c38b90e5f5.tar.gz chromium_src-d13c32787737f1822202802f062c41c38b90e5f5.tar.bz2 |
Pass the NetworkChangeNotifier to HostResolver.
This requires the following refactors:
(1) NetworkChangeNotifier moves out of HttpNetworkSession into IOThread.
(2) HostResolver gets initialized with NetworkChangeNotifier.
(3) NetworkChangeNotifier needs to get passed into HttpCache and HttpNetworkSession (required updating a lot of files).
(4) NetworkChangeNotifier is no longer reference counted. It is owned by IOThread.
(5) IOThread gains a new struct: Globals. It can only be used on the io thread.
(6) ChromeURLRequestContextFactory uses IOThread::Globals to initialize ChromeURLRequest objects with the host resolver and network change notifier.
BUG=26159
Review URL: http://codereview.chromium.org/552117
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38052 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http')
-rw-r--r-- | net/http/http_cache.cc | 12 | ||||
-rw-r--r-- | net/http/http_cache.h | 7 | ||||
-rw-r--r-- | net/http/http_network_layer.cc | 19 | ||||
-rw-r--r-- | net/http/http_network_layer.h | 9 | ||||
-rw-r--r-- | net/http/http_network_layer_unittest.cc | 7 | ||||
-rw-r--r-- | net/http/http_network_session.cc | 5 | ||||
-rw-r--r-- | net/http/http_network_session.h | 4 | ||||
-rw-r--r-- | net/http/http_network_transaction_unittest.cc | 3 |
8 files changed, 44 insertions, 22 deletions
diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc index c99caca..b7989d1 100644 --- a/net/http/http_cache.cc +++ b/net/http/http_cache.cc @@ -124,7 +124,8 @@ class HttpCache::BackendCallback : public CallbackRunner<Tuple1<int> > { //----------------------------------------------------------------------------- -HttpCache::HttpCache(HostResolver* host_resolver, +HttpCache::HttpCache(NetworkChangeNotifier* network_change_notifier, + HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service, const FilePath& cache_dir, @@ -133,7 +134,8 @@ HttpCache::HttpCache(HostResolver* host_resolver, mode_(NORMAL), type_(DISK_CACHE), network_layer_(HttpNetworkLayer::CreateFactory( - host_resolver, proxy_service, ssl_config_service)), + network_change_notifier, host_resolver, proxy_service, + ssl_config_service)), ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)), enable_range_support_(true), cache_size_(cache_size) { @@ -151,14 +153,16 @@ HttpCache::HttpCache(HttpNetworkSession* session, cache_size_(cache_size) { } -HttpCache::HttpCache(HostResolver* host_resolver, +HttpCache::HttpCache(NetworkChangeNotifier* network_change_notifier, + HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service, int cache_size) : mode_(NORMAL), type_(MEMORY_CACHE), network_layer_(HttpNetworkLayer::CreateFactory( - host_resolver, proxy_service, ssl_config_service)), + network_change_notifier, host_resolver, proxy_service, + ssl_config_service)), ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)), enable_range_support_(true), cache_size_(cache_size) { diff --git a/net/http/http_cache.h b/net/http/http_cache.h index 90dac74..1985f9b 100644 --- a/net/http/http_cache.h +++ b/net/http/http_cache.h @@ -38,6 +38,7 @@ class HostResolver; class HttpNetworkSession; class HttpRequestInfo; class HttpResponseInfo; +class NetworkChangeNotifier; class ProxyService; class SSLConfigService; @@ -63,7 +64,8 @@ class HttpCache : public HttpTransactionFactory, // Initialize the cache from the directory where its data is stored. The // disk cache is initialized lazily (by CreateTransaction) in this case. If // |cache_size| is zero, a default value will be calculated automatically. - HttpCache(HostResolver* host_resolver, + HttpCache(NetworkChangeNotifier* network_change_notifier, + HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service, const FilePath& cache_dir, @@ -81,7 +83,8 @@ class HttpCache : public HttpTransactionFactory, // Initialize using an in-memory cache. The cache is initialized lazily // (by CreateTransaction) in this case. If |cache_size| is zero, a default // value will be calculated automatically. - HttpCache(HostResolver* host_resolver, + HttpCache(NetworkChangeNotifier* network_change_notifier, + HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service, int cache_size); diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc index 72c377f..c8022b7 100644 --- a/net/http/http_network_layer.cc +++ b/net/http/http_network_layer.cc @@ -20,12 +20,14 @@ namespace net { // static HttpTransactionFactory* HttpNetworkLayer::CreateFactory( + NetworkChangeNotifier* network_change_notifier, HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service) { DCHECK(proxy_service); return new HttpNetworkLayer(ClientSocketFactory::GetDefaultFactory(), + network_change_notifier, host_resolver, proxy_service, ssl_config_service); } @@ -40,11 +42,14 @@ HttpTransactionFactory* HttpNetworkLayer::CreateFactory( //----------------------------------------------------------------------------- bool HttpNetworkLayer::force_flip_ = false; -HttpNetworkLayer::HttpNetworkLayer(ClientSocketFactory* socket_factory, - HostResolver* host_resolver, - ProxyService* proxy_service, - SSLConfigService* ssl_config_service) +HttpNetworkLayer::HttpNetworkLayer( + ClientSocketFactory* socket_factory, + NetworkChangeNotifier* network_change_notifier, + HostResolver* host_resolver, + ProxyService* proxy_service, + SSLConfigService* ssl_config_service) : socket_factory_(socket_factory), + network_change_notifier_(network_change_notifier), host_resolver_(host_resolver), proxy_service_(proxy_service), ssl_config_service_(ssl_config_service), @@ -57,6 +62,7 @@ HttpNetworkLayer::HttpNetworkLayer(ClientSocketFactory* socket_factory, HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session) : socket_factory_(ClientSocketFactory::GetDefaultFactory()), + network_change_notifier_(NULL), ssl_config_service_(NULL), session_(session), flip_session_pool_(session->flip_session_pool()), @@ -94,9 +100,10 @@ HttpNetworkSession* HttpNetworkLayer::GetSession() { DCHECK(proxy_service_); FlipSessionPool* flip_pool = new FlipSessionPool; session_ = new HttpNetworkSession( - host_resolver_, proxy_service_, socket_factory_, - ssl_config_service_, flip_pool); + network_change_notifier_, host_resolver_, proxy_service_, + socket_factory_, ssl_config_service_, flip_pool); // These were just temps for lazy-initializing HttpNetworkSession. + network_change_notifier_ = NULL; host_resolver_ = NULL; proxy_service_ = NULL; socket_factory_ = NULL; diff --git a/net/http/http_network_layer.h b/net/http/http_network_layer.h index 4dbf9a4..38c10c7 100644 --- a/net/http/http_network_layer.h +++ b/net/http/http_network_layer.h @@ -17,15 +17,17 @@ class ClientSocketFactory; class FlipSessionPool; class HostResolver; class HttpNetworkSession; +class NetworkChangeNotifier; class ProxyInfo; class ProxyService; class SSLConfigService; class HttpNetworkLayer : public HttpTransactionFactory { public: - // |socket_factory|, |proxy_service| and |host_resolver| must remain valid - // for the lifetime of HttpNetworkLayer. + // |socket_factory|, |network_change_notifier|, |proxy_service| and + // |host_resolver| must remain valid for the lifetime of HttpNetworkLayer. HttpNetworkLayer(ClientSocketFactory* socket_factory, + NetworkChangeNotifier* network_change_notifier, HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service); // Construct a HttpNetworkLayer with an existing HttpNetworkSession which @@ -36,6 +38,7 @@ class HttpNetworkLayer : public HttpTransactionFactory { // This function hides the details of how a network layer gets instantiated // and allows other implementations to be substituted. static HttpTransactionFactory* CreateFactory( + NetworkChangeNotifier* network_change_notifier, HostResolver* host_resolver, ProxyService* proxy_service, SSLConfigService* ssl_config_service); @@ -65,6 +68,8 @@ class HttpNetworkLayer : public HttpTransactionFactory { // The factory we will use to create network sockets. ClientSocketFactory* socket_factory_; + NetworkChangeNotifier* network_change_notifier_; + // The host resolver and proxy service that will be used when lazily // creating |session_|. scoped_refptr<HostResolver> host_resolver_; diff --git a/net/http/http_network_layer_unittest.cc b/net/http/http_network_layer_unittest.cc index d8240e1..1e75ece 100644 --- a/net/http/http_network_layer_unittest.cc +++ b/net/http/http_network_layer_unittest.cc @@ -16,7 +16,7 @@ class HttpNetworkLayerTest : public PlatformTest { TEST_F(HttpNetworkLayerTest, CreateAndDestroy) { net::HttpNetworkLayer factory( - NULL, new net::MockHostResolver, net::ProxyService::CreateNull(), + NULL, NULL, new net::MockHostResolver, net::ProxyService::CreateNull(), new net::SSLConfigServiceDefaults); scoped_ptr<net::HttpTransaction> trans; @@ -27,7 +27,7 @@ TEST_F(HttpNetworkLayerTest, CreateAndDestroy) { TEST_F(HttpNetworkLayerTest, Suspend) { net::HttpNetworkLayer factory( - NULL, new net::MockHostResolver, net::ProxyService::CreateNull(), + NULL, NULL, new net::MockHostResolver, net::ProxyService::CreateNull(), new net::SSLConfigServiceDefaults); scoped_ptr<net::HttpTransaction> trans; @@ -65,7 +65,8 @@ TEST_F(HttpNetworkLayerTest, GET) { net::StaticSocketDataProvider data(data_reads, data_writes); mock_socket_factory.AddSocketDataProvider(&data); - net::HttpNetworkLayer factory(&mock_socket_factory, new net::MockHostResolver, + net::HttpNetworkLayer factory(&mock_socket_factory, NULL, + new net::MockHostResolver, net::ProxyService::CreateNull(), new net::SSLConfigServiceDefaults); diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc index 150c6f0..9f4cba7 100644 --- a/net/http/http_network_session.cc +++ b/net/http/http_network_session.cc @@ -5,7 +5,6 @@ #include "net/http/http_network_session.h" #include "base/logging.h" -#include "net/base/network_change_notifier.h" #include "net/flip/flip_session_pool.h" namespace net { @@ -21,13 +20,13 @@ uint16 HttpNetworkSession::g_fixed_http_port = 0; uint16 HttpNetworkSession::g_fixed_https_port = 0; HttpNetworkSession::HttpNetworkSession( + NetworkChangeNotifier* network_change_notifier, HostResolver* host_resolver, ProxyService* proxy_service, ClientSocketFactory* client_socket_factory, SSLConfigService* ssl_config_service, FlipSessionPool* flip_session_pool) - : network_change_notifier_( - NetworkChangeNotifier::CreateDefaultNetworkChangeNotifier()), + : network_change_notifier_(network_change_notifier), tcp_socket_pool_(new TCPClientSocketPool( max_sockets_, max_sockets_per_group_, host_resolver, client_socket_factory, network_change_notifier_)), diff --git a/net/http/http_network_session.h b/net/http/http_network_session.h index 684da16..32bcdee 100644 --- a/net/http/http_network_session.h +++ b/net/http/http_network_session.h @@ -17,11 +17,13 @@ namespace net { class ClientSocketFactory; class FlipSessionPool; +class NetworkChangeNotifier; // This class holds session objects used by HttpNetworkTransaction objects. class HttpNetworkSession : public base::RefCounted<HttpNetworkSession> { public: HttpNetworkSession( + NetworkChangeNotifier* network_change_notifier, HostResolver* host_resolver, ProxyService* proxy_service, ClientSocketFactory* client_socket_factory, @@ -75,7 +77,7 @@ class HttpNetworkSession : public base::RefCounted<HttpNetworkSession> { HttpAuthCache auth_cache_; SSLClientAuthCache ssl_client_auth_cache_; - const scoped_refptr<NetworkChangeNotifier> network_change_notifier_; + NetworkChangeNotifier* const network_change_notifier_; scoped_refptr<TCPClientSocketPool> tcp_socket_pool_; ClientSocketFactory* socket_factory_; scoped_refptr<HostResolver> host_resolver_; diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index 7be3390..9639457 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc @@ -72,7 +72,8 @@ ProxyService* CreateFixedProxyService(const std::string& proxy) { HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { - return new HttpNetworkSession(session_deps->host_resolver, + return new HttpNetworkSession(NULL, + session_deps->host_resolver, session_deps->proxy_service, &session_deps->socket_factory, session_deps->ssl_config_service, |