summaryrefslogtreecommitdiffstats
path: root/net/http
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-04 00:24:51 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-04 00:24:51 +0000
commitd13c32787737f1822202802f062c41c38b90e5f5 (patch)
treef616a6dcf08fee7cc6f5c023e53be4fa501e9ef2 /net/http
parent9becad4ad1adcd4e4339b45f8b90d299fd968a08 (diff)
downloadchromium_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.cc12
-rw-r--r--net/http/http_cache.h7
-rw-r--r--net/http/http_network_layer.cc19
-rw-r--r--net/http/http_network_layer.h9
-rw-r--r--net/http/http_network_layer_unittest.cc7
-rw-r--r--net/http/http_network_session.cc5
-rw-r--r--net/http/http_network_session.h4
-rw-r--r--net/http/http_network_transaction_unittest.cc3
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,