diff options
Diffstat (limited to 'net/http')
-rw-r--r-- | net/http/http_network_layer.cc | 17 | ||||
-rw-r--r-- | net/http/http_network_layer.h | 2 | ||||
-rw-r--r-- | net/http/http_network_session.h | 8 | ||||
-rw-r--r-- | net/http/http_network_session_peer.h | 78 | ||||
-rw-r--r-- | net/http/http_network_transaction_unittest.cc | 62 | ||||
-rw-r--r-- | net/http/http_stream_request.cc | 3 |
6 files changed, 98 insertions, 72 deletions
diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc index 65d2aa3..a883db2 100644 --- a/net/http/http_network_layer.cc +++ b/net/http/http_network_layer.cc @@ -94,7 +94,7 @@ HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session) : socket_factory_(ClientSocketFactory::GetDefaultFactory()), ssl_config_service_(NULL), session_(session), - spdy_session_pool_(session->spdy_session_pool()), + spdy_session_pool_(NULL), http_auth_handler_factory_(NULL), network_delegate_(NULL), net_log_(NULL), @@ -127,10 +127,17 @@ void HttpNetworkLayer::Suspend(bool suspend) { HttpNetworkSession* HttpNetworkLayer::GetSession() { if (!session_) { DCHECK(proxy_service_); - SpdySessionPool* spdy_pool = new SpdySessionPool(ssl_config_service_); - session_ = new HttpNetworkSession(host_resolver_, proxy_service_, - socket_factory_, ssl_config_service_, spdy_pool, - http_auth_handler_factory_, network_delegate_, net_log_); + if (!spdy_session_pool_.get()) + spdy_session_pool_.reset(new SpdySessionPool(ssl_config_service_)); + session_ = new HttpNetworkSession( + host_resolver_, + proxy_service_, + socket_factory_, + ssl_config_service_, + spdy_session_pool_.release(), + http_auth_handler_factory_, + network_delegate_, + net_log_); // These were just temps for lazy-initializing HttpNetworkSession. host_resolver_ = NULL; proxy_service_ = NULL; diff --git a/net/http/http_network_layer.h b/net/http/http_network_layer.h index f4ce1f1..9d8b838 100644 --- a/net/http/http_network_layer.h +++ b/net/http/http_network_layer.h @@ -97,7 +97,7 @@ class HttpNetworkLayer : public HttpTransactionFactory, public NonThreadSafe { scoped_refptr<SSLConfigService> ssl_config_service_; scoped_refptr<HttpNetworkSession> session_; - scoped_refptr<SpdySessionPool> spdy_session_pool_; + scoped_ptr<SpdySessionPool> spdy_session_pool_; HttpAuthHandlerFactory* http_auth_handler_factory_; HttpNetworkDelegate* network_delegate_; diff --git a/net/http/http_network_session.h b/net/http/http_network_session.h index 3d1211c..1ee0bc5 100644 --- a/net/http/http_network_session.h +++ b/net/http/http_network_session.h @@ -105,9 +105,7 @@ class HttpNetworkSession : public base::RefCounted<HttpNetworkSession>, HostResolver* host_resolver() { return host_resolver_; } ProxyService* proxy_service() { return proxy_service_; } SSLConfigService* ssl_config_service() { return ssl_config_service_; } - const scoped_refptr<SpdySessionPool>& spdy_session_pool() { - return spdy_session_pool_; - } + SpdySessionPool* spdy_session_pool() { return spdy_session_pool_.get(); } HttpAuthHandlerFactory* http_auth_handler_factory() { return http_auth_handler_factory_; } @@ -143,7 +141,9 @@ class HttpNetworkSession : public base::RefCounted<HttpNetworkSession>, scoped_refptr<ProxyService> proxy_service_; scoped_refptr<SSLConfigService> ssl_config_service_; ClientSocketPoolManager socket_pool_manager_; - scoped_refptr<SpdySessionPool> spdy_session_pool_; + // TODO(willchan): Move this out to IOThread so it can be shared across + // URLRequestContexts. + scoped_ptr<SpdySessionPool> spdy_session_pool_; scoped_refptr<HttpStreamFactory> http_stream_factory_; HttpAuthHandlerFactory* http_auth_handler_factory_; HttpNetworkDelegate* const network_delegate_; diff --git a/net/http/http_network_session_peer.h b/net/http/http_network_session_peer.h new file mode 100644 index 0000000..13f3fa7 --- /dev/null +++ b/net/http/http_network_session_peer.h @@ -0,0 +1,78 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_HTTP_HTTP_NETWORK_SESSION_PEER_H_ +#define NET_HTTP_HTTP_NETWORK_SESSION_PEER_H_ +#pragma once + +#include "net/http/http_network_session.h" +#include "net/http/http_proxy_client_socket_pool.h" +#include "net/socket/socks_client_socket_pool.h" +#include "net/socket/ssl_client_socket_pool.h" + +namespace net { + +class HttpNetworkSessionPeer { + public: + explicit HttpNetworkSessionPeer( + const scoped_refptr<HttpNetworkSession>& session) + : session_(session) {} + + void SetTCPSocketPool(TCPClientSocketPool* pool) { + session_->socket_pool_manager_.tcp_socket_pool_.reset(pool); + } + + void SetSocketPoolForSOCKSProxy( + const HostPortPair& socks_proxy, + SOCKSClientSocketPool* pool) { + ClientSocketPoolManager* socket_pool_manager = + &session_->socket_pool_manager_; + + // Call through the public interface to force initialization of the + // wrapped socket pools. + delete socket_pool_manager->GetSocketPoolForSOCKSProxy(socks_proxy); + socket_pool_manager->socks_socket_pools_[socks_proxy] = pool; + } + + void SetSocketPoolForHTTPProxy( + const HostPortPair& http_proxy, + HttpProxyClientSocketPool* pool) { + ClientSocketPoolManager* socket_pool_manager = + &session_->socket_pool_manager_; + + // Call through the public interface to force initialization of the + // wrapped socket pools. + delete socket_pool_manager->GetSocketPoolForHTTPProxy(http_proxy); + socket_pool_manager->http_proxy_socket_pools_[http_proxy] = pool; + } + + void SetSSLSocketPool(SSLClientSocketPool* pool) { + session_->socket_pool_manager_.ssl_socket_pool_.reset(pool); + } + + void SetSocketPoolForSSLWithProxy( + const HostPortPair& proxy_host, + SSLClientSocketPool* pool) { + ClientSocketPoolManager* socket_pool_manager = + &session_->socket_pool_manager_; + + // Call through the public interface to force initialization of the + // wrapped socket pools. + delete socket_pool_manager->GetSocketPoolForSSLWithProxy(proxy_host); + socket_pool_manager->ssl_socket_pools_for_proxies_[proxy_host] = pool; + } + + void SetProxyService(ProxyService* proxy_service) { + session_->proxy_service_ = proxy_service; + } + + private: + const scoped_refptr<HttpNetworkSession> session_; + + DISALLOW_COPY_AND_ASSIGN(HttpNetworkSessionPeer); +}; + +} // namespace net + +#endif // NET_HTTP_HTTP_NETWORK_SESSION_PEER_H_ diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index 68e4038..d8b6ffc 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc @@ -29,6 +29,7 @@ #include "net/http/http_auth_handler_ntlm.h" #include "net/http/http_basic_stream.h" #include "net/http/http_network_session.h" +#include "net/http/http_network_session_peer.h" #include "net/http/http_stream.h" #include "net/http/http_stream_factory.h" #include "net/http/http_transaction_unittest.h" @@ -66,62 +67,6 @@ const string16 kWrongPassword(ASCIIToUTF16("wrongpassword")); namespace net { -class HttpNetworkSessionPeer { - public: - explicit HttpNetworkSessionPeer( - const scoped_refptr<HttpNetworkSession>& session) - : session_(session) {} - - void SetTCPSocketPool(TCPClientSocketPool* pool) { - session_->socket_pool_manager_.tcp_socket_pool_.reset(pool); - } - - void SetSocketPoolForSOCKSProxy( - const HostPortPair& socks_proxy, - SOCKSClientSocketPool* pool) { - ClientSocketPoolManager* socket_pool_manager = - &session_->socket_pool_manager_; - - // Call through the public interface to force initialization of the - // wrapped socket pools. - delete socket_pool_manager->GetSocketPoolForSOCKSProxy(socks_proxy); - socket_pool_manager->socks_socket_pools_[socks_proxy] = pool; - } - - void SetSocketPoolForHTTPProxy( - const HostPortPair& http_proxy, - HttpProxyClientSocketPool* pool) { - ClientSocketPoolManager* socket_pool_manager = - &session_->socket_pool_manager_; - - // Call through the public interface to force initialization of the - // wrapped socket pools. - delete socket_pool_manager->GetSocketPoolForHTTPProxy(http_proxy); - socket_pool_manager->http_proxy_socket_pools_[http_proxy] = pool; - } - - void SetSSLSocketPool(SSLClientSocketPool* pool) { - session_->socket_pool_manager_.ssl_socket_pool_.reset(pool); - } - - void SetSocketPoolForSSLWithProxy( - const HostPortPair& proxy_host, - SSLClientSocketPool* pool) { - ClientSocketPoolManager* socket_pool_manager = - &session_->socket_pool_manager_; - - // Call through the public interface to force initialization of the - // wrapped socket pools. - delete socket_pool_manager->GetSocketPoolForSSLWithProxy(proxy_host); - socket_pool_manager->ssl_socket_pools_for_proxies_[proxy_host] = pool; - } - - private: - const scoped_refptr<HttpNetworkSession> session_; - - DISALLOW_COPY_AND_ASSIGN(HttpNetworkSessionPeer); -}; - // Helper to manage the lifetimes of the dependencies for a // HttpNetworkTransaction. struct SessionDependencies { @@ -132,7 +77,6 @@ struct SessionDependencies { ssl_config_service(new SSLConfigServiceDefaults), http_auth_handler_factory( HttpAuthHandlerFactory::CreateDefault(host_resolver)), - spdy_session_pool(new SpdySessionPool(NULL)), net_log(NULL) {} // Custom proxy service dependency. @@ -142,7 +86,6 @@ struct SessionDependencies { ssl_config_service(new SSLConfigServiceDefaults), http_auth_handler_factory( HttpAuthHandlerFactory::CreateDefault(host_resolver)), - spdy_session_pool(new SpdySessionPool(NULL)), net_log(NULL) {} scoped_refptr<MockHostResolverBase> host_resolver; @@ -150,7 +93,6 @@ struct SessionDependencies { scoped_refptr<SSLConfigService> ssl_config_service; MockClientSocketFactory socket_factory; scoped_ptr<HttpAuthHandlerFactory> http_auth_handler_factory; - scoped_refptr<SpdySessionPool> spdy_session_pool; NetLog* net_log; }; @@ -165,7 +107,7 @@ HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { session_deps->proxy_service, &session_deps->socket_factory, session_deps->ssl_config_service, - session_deps->spdy_session_pool, + new SpdySessionPool(NULL), session_deps->http_auth_handler_factory.get(), NULL, session_deps->net_log); diff --git a/net/http/http_stream_request.cc b/net/http/http_stream_request.cc index 67aefb0..86cf0ef 100644 --- a/net/http/http_stream_request.cc +++ b/net/http/http_stream_request.cc @@ -694,8 +694,7 @@ int HttpStreamRequest::DoCreateStream() { CHECK(!stream_.get()); bool direct = true; - const scoped_refptr<SpdySessionPool> spdy_pool = - session_->spdy_session_pool(); + SpdySessionPool* spdy_pool = session_->spdy_session_pool(); scoped_refptr<SpdySession> spdy_session; const ProxyServer& proxy_server = proxy_info()->proxy_server(); |