OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/http/http_network_session.h" | 5 #include "net/http/http_network_session.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/debug/stack_trace.h" | 10 #include "base/debug/stack_trace.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 | 29 |
30 namespace { | 30 namespace { |
31 | 31 |
32 net::ClientSocketPoolManager* CreateSocketPoolManager( | 32 net::ClientSocketPoolManager* CreateSocketPoolManager( |
33 net::HttpNetworkSession::SocketPoolType pool_type, | 33 net::HttpNetworkSession::SocketPoolType pool_type, |
34 const net::HttpNetworkSession::Params& params) { | 34 const net::HttpNetworkSession::Params& params) { |
35 // TODO(yutak): Differentiate WebSocket pool manager and allow more | 35 // TODO(yutak): Differentiate WebSocket pool manager and allow more |
36 // simultaneous connections for WebSockets. | 36 // simultaneous connections for WebSockets. |
37 return new net::ClientSocketPoolManagerImpl( | 37 return new net::ClientSocketPoolManagerImpl( |
38 params.net_log, | 38 params.net_log, |
39 params.client_socket_factory ? | 39 params.client_socket_factory |
40 params.client_socket_factory : | 40 ? params.client_socket_factory |
41 net::ClientSocketFactory::GetDefaultFactory(), | 41 : net::ClientSocketFactory::GetDefaultFactory(), |
42 params.host_resolver, | 42 params.host_resolver, |
43 params.cert_verifier, | 43 params.cert_verifier, |
44 params.server_bound_cert_service, | 44 params.server_bound_cert_service, |
45 params.transport_security_state, | 45 params.transport_security_state, |
46 params.cert_transparency_verifier, | 46 params.cert_transparency_verifier, |
47 params.ssl_session_cache_shard, | 47 params.ssl_session_cache_shard, |
48 params.proxy_service, | 48 params.proxy_service, |
49 params.ssl_config_service, | 49 params.ssl_config_service, |
50 pool_type); | 50 pool_type); |
51 } | 51 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 enable_quic_time_based_loss_detection(false), | 87 enable_quic_time_based_loss_detection(false), |
88 enable_quic_persist_server_info(false), | 88 enable_quic_persist_server_info(false), |
89 quic_clock(NULL), | 89 quic_clock(NULL), |
90 quic_random(NULL), | 90 quic_random(NULL), |
91 quic_max_packet_length(kDefaultMaxPacketSize), | 91 quic_max_packet_length(kDefaultMaxPacketSize), |
92 enable_user_alternate_protocol_ports(false), | 92 enable_user_alternate_protocol_ports(false), |
93 quic_crypto_client_stream_factory(NULL) { | 93 quic_crypto_client_stream_factory(NULL) { |
94 quic_supported_versions.push_back(QUIC_VERSION_16); | 94 quic_supported_versions.push_back(QUIC_VERSION_16); |
95 } | 95 } |
96 | 96 |
97 HttpNetworkSession::Params::~Params() {} | 97 HttpNetworkSession::Params::~Params() { |
| 98 } |
98 | 99 |
99 // TODO(mbelshe): Move the socket factories into HttpStreamFactory. | 100 // TODO(mbelshe): Move the socket factories into HttpStreamFactory. |
100 HttpNetworkSession::HttpNetworkSession(const Params& params) | 101 HttpNetworkSession::HttpNetworkSession(const Params& params) |
101 : net_log_(params.net_log), | 102 : net_log_(params.net_log), |
102 network_delegate_(params.network_delegate), | 103 network_delegate_(params.network_delegate), |
103 http_server_properties_(params.http_server_properties), | 104 http_server_properties_(params.http_server_properties), |
104 cert_verifier_(params.cert_verifier), | 105 cert_verifier_(params.cert_verifier), |
105 http_auth_handler_factory_(params.http_auth_handler_factory), | 106 http_auth_handler_factory_(params.http_auth_handler_factory), |
106 force_http_pipelining_(params.force_http_pipelining), | 107 force_http_pipelining_(params.force_http_pipelining), |
107 proxy_service_(params.proxy_service), | 108 proxy_service_(params.proxy_service), |
108 ssl_config_service_(params.ssl_config_service), | 109 ssl_config_service_(params.ssl_config_service), |
109 normal_socket_pool_manager_( | 110 normal_socket_pool_manager_( |
110 CreateSocketPoolManager(NORMAL_SOCKET_POOL, params)), | 111 CreateSocketPoolManager(NORMAL_SOCKET_POOL, params)), |
111 websocket_socket_pool_manager_( | 112 websocket_socket_pool_manager_( |
112 CreateSocketPoolManager(WEBSOCKET_SOCKET_POOL, params)), | 113 CreateSocketPoolManager(WEBSOCKET_SOCKET_POOL, params)), |
113 quic_stream_factory_(params.host_resolver, | 114 quic_stream_factory_( |
114 params.client_socket_factory ? | 115 params.host_resolver, |
115 params.client_socket_factory : | 116 params.client_socket_factory |
116 net::ClientSocketFactory::GetDefaultFactory(), | 117 ? params.client_socket_factory |
117 params.http_server_properties, | 118 : net::ClientSocketFactory::GetDefaultFactory(), |
118 params.cert_verifier, | 119 params.http_server_properties, |
119 params.quic_crypto_client_stream_factory, | 120 params.cert_verifier, |
120 params.quic_random ? params.quic_random : | 121 params.quic_crypto_client_stream_factory, |
121 QuicRandom::GetInstance(), | 122 params.quic_random ? params.quic_random : QuicRandom::GetInstance(), |
122 params.quic_clock ? params. quic_clock : | 123 params.quic_clock ? params.quic_clock : new QuicClock(), |
123 new QuicClock(), | 124 params.quic_max_packet_length, |
124 params.quic_max_packet_length, | 125 params.quic_supported_versions, |
125 params.quic_supported_versions, | 126 params.enable_quic_port_selection, |
126 params.enable_quic_port_selection, | 127 params.enable_quic_pacing, |
127 params.enable_quic_pacing, | 128 params.enable_quic_time_based_loss_detection), |
128 params.enable_quic_time_based_loss_detection), | |
129 spdy_session_pool_(params.host_resolver, | 129 spdy_session_pool_(params.host_resolver, |
130 params.ssl_config_service, | 130 params.ssl_config_service, |
131 params.http_server_properties, | 131 params.http_server_properties, |
132 params.force_spdy_single_domain, | 132 params.force_spdy_single_domain, |
133 params.enable_spdy_compression, | 133 params.enable_spdy_compression, |
134 params.enable_spdy_ping_based_connection_checking, | 134 params.enable_spdy_ping_based_connection_checking, |
135 params.spdy_default_protocol, | 135 params.spdy_default_protocol, |
136 params.spdy_stream_initial_recv_window_size, | 136 params.spdy_stream_initial_recv_window_size, |
137 params.spdy_initial_max_concurrent_streams, | 137 params.spdy_initial_max_concurrent_streams, |
138 params.spdy_max_concurrent_streams_limit, | 138 params.spdy_max_concurrent_streams_limit, |
139 params.time_func, | 139 params.time_func, |
140 params.trusted_spdy_proxy), | 140 params.trusted_spdy_proxy), |
141 http_stream_factory_(new HttpStreamFactoryImpl(this, false)), | 141 http_stream_factory_(new HttpStreamFactoryImpl(this, false)), |
142 http_stream_factory_for_websocket_( | 142 http_stream_factory_for_websocket_(new HttpStreamFactoryImpl(this, true)), |
143 new HttpStreamFactoryImpl(this, true)), | |
144 params_(params) { | 143 params_(params) { |
145 DCHECK(proxy_service_); | 144 DCHECK(proxy_service_); |
146 DCHECK(ssl_config_service_.get()); | 145 DCHECK(ssl_config_service_.get()); |
147 CHECK(http_server_properties_); | 146 CHECK(http_server_properties_); |
148 | 147 |
149 if (HpackHuffmanAggregator::UseAggregator()) { | 148 if (HpackHuffmanAggregator::UseAggregator()) { |
150 huffman_aggregator_.reset(new HpackHuffmanAggregator()); | 149 huffman_aggregator_.reset(new HpackHuffmanAggregator()); |
151 } | 150 } |
152 } | 151 } |
153 | 152 |
(...skipping 19 matching lines...) Expand all Loading... |
173 } | 172 } |
174 | 173 |
175 SSLClientSocketPool* HttpNetworkSession::GetSSLSocketPool( | 174 SSLClientSocketPool* HttpNetworkSession::GetSSLSocketPool( |
176 SocketPoolType pool_type) { | 175 SocketPoolType pool_type) { |
177 return GetSocketPoolManager(pool_type)->GetSSLSocketPool(); | 176 return GetSocketPoolManager(pool_type)->GetSSLSocketPool(); |
178 } | 177 } |
179 | 178 |
180 SOCKSClientSocketPool* HttpNetworkSession::GetSocketPoolForSOCKSProxy( | 179 SOCKSClientSocketPool* HttpNetworkSession::GetSocketPoolForSOCKSProxy( |
181 SocketPoolType pool_type, | 180 SocketPoolType pool_type, |
182 const HostPortPair& socks_proxy) { | 181 const HostPortPair& socks_proxy) { |
183 return GetSocketPoolManager(pool_type)->GetSocketPoolForSOCKSProxy( | 182 return GetSocketPoolManager(pool_type) |
184 socks_proxy); | 183 ->GetSocketPoolForSOCKSProxy(socks_proxy); |
185 } | 184 } |
186 | 185 |
187 HttpProxyClientSocketPool* HttpNetworkSession::GetSocketPoolForHTTPProxy( | 186 HttpProxyClientSocketPool* HttpNetworkSession::GetSocketPoolForHTTPProxy( |
188 SocketPoolType pool_type, | 187 SocketPoolType pool_type, |
189 const HostPortPair& http_proxy) { | 188 const HostPortPair& http_proxy) { |
190 return GetSocketPoolManager(pool_type)->GetSocketPoolForHTTPProxy(http_proxy); | 189 return GetSocketPoolManager(pool_type)->GetSocketPoolForHTTPProxy(http_proxy); |
191 } | 190 } |
192 | 191 |
193 SSLClientSocketPool* HttpNetworkSession::GetSocketPoolForSSLWithProxy( | 192 SSLClientSocketPool* HttpNetworkSession::GetSocketPoolForSSLWithProxy( |
194 SocketPoolType pool_type, | 193 SocketPoolType pool_type, |
195 const HostPortPair& proxy_server) { | 194 const HostPortPair& proxy_server) { |
196 return GetSocketPoolManager(pool_type)->GetSocketPoolForSSLWithProxy( | 195 return GetSocketPoolManager(pool_type) |
197 proxy_server); | 196 ->GetSocketPoolForSSLWithProxy(proxy_server); |
198 } | 197 } |
199 | 198 |
200 base::Value* HttpNetworkSession::SocketPoolInfoToValue() const { | 199 base::Value* HttpNetworkSession::SocketPoolInfoToValue() const { |
201 // TODO(yutak): Should merge values from normal pools and WebSocket pools. | 200 // TODO(yutak): Should merge values from normal pools and WebSocket pools. |
202 return normal_socket_pool_manager_->SocketPoolInfoToValue(); | 201 return normal_socket_pool_manager_->SocketPoolInfoToValue(); |
203 } | 202 } |
204 | 203 |
205 base::Value* HttpNetworkSession::SpdySessionPoolInfoToValue() const { | 204 base::Value* HttpNetworkSession::SpdySessionPoolInfoToValue() const { |
206 return spdy_session_pool_.SpdySessionPoolInfoToValue(); | 205 return spdy_session_pool_.SpdySessionPoolInfoToValue(); |
207 } | 206 } |
208 | 207 |
209 base::Value* HttpNetworkSession::QuicInfoToValue() const { | 208 base::Value* HttpNetworkSession::QuicInfoToValue() const { |
210 base::DictionaryValue* dict = new base::DictionaryValue(); | 209 base::DictionaryValue* dict = new base::DictionaryValue(); |
211 dict->Set("sessions", quic_stream_factory_.QuicStreamFactoryInfoToValue()); | 210 dict->Set("sessions", quic_stream_factory_.QuicStreamFactoryInfoToValue()); |
212 dict->SetBoolean("quic_enabled", params_.enable_quic); | 211 dict->SetBoolean("quic_enabled", params_.enable_quic); |
213 dict->SetBoolean("quic_enabled_https", params_.enable_quic_https); | 212 dict->SetBoolean("quic_enabled_https", params_.enable_quic_https); |
214 dict->SetBoolean("enable_quic_port_selection", | 213 dict->SetBoolean("enable_quic_port_selection", |
215 params_.enable_quic_port_selection); | 214 params_.enable_quic_port_selection); |
216 dict->SetBoolean("enable_quic_pacing", | 215 dict->SetBoolean("enable_quic_pacing", params_.enable_quic_pacing); |
217 params_.enable_quic_pacing); | |
218 dict->SetBoolean("enable_quic_time_based_loss_detection", | 216 dict->SetBoolean("enable_quic_time_based_loss_detection", |
219 params_.enable_quic_time_based_loss_detection); | 217 params_.enable_quic_time_based_loss_detection); |
220 dict->SetBoolean("enable_quic_persist_server_info", | 218 dict->SetBoolean("enable_quic_persist_server_info", |
221 params_.enable_quic_persist_server_info); | 219 params_.enable_quic_persist_server_info); |
222 dict->SetString("origin_to_force_quic_on", | 220 dict->SetString("origin_to_force_quic_on", |
223 params_.origin_to_force_quic_on.ToString()); | 221 params_.origin_to_force_quic_on.ToString()); |
224 return dict; | 222 return dict; |
225 } | 223 } |
226 | 224 |
227 void HttpNetworkSession::CloseAllConnections() { | 225 void HttpNetworkSession::CloseAllConnections() { |
(...skipping 17 matching lines...) Expand all Loading... |
245 case WEBSOCKET_SOCKET_POOL: | 243 case WEBSOCKET_SOCKET_POOL: |
246 return websocket_socket_pool_manager_.get(); | 244 return websocket_socket_pool_manager_.get(); |
247 default: | 245 default: |
248 NOTREACHED(); | 246 NOTREACHED(); |
249 break; | 247 break; |
250 } | 248 } |
251 return NULL; | 249 return NULL; |
252 } | 250 } |
253 | 251 |
254 } // namespace net | 252 } // namespace net |
OLD | NEW |