Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: net/http/http_network_session.cc

Issue 2907463002: Split HttpNetworkSession::Params into two structs. (Closed)
Patch Set: Response to comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/http_network_session.h ('k') | net/http/http_network_transaction.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <inttypes.h> 7 #include <inttypes.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "net/spdy/chromium/spdy_session_pool.h" 42 #include "net/spdy/chromium/spdy_session_pool.h"
43 43
44 namespace net { 44 namespace net {
45 45
46 namespace { 46 namespace {
47 47
48 base::StaticAtomicSequenceNumber g_next_shard_id; 48 base::StaticAtomicSequenceNumber g_next_shard_id;
49 49
50 ClientSocketPoolManager* CreateSocketPoolManager( 50 ClientSocketPoolManager* CreateSocketPoolManager(
51 HttpNetworkSession::SocketPoolType pool_type, 51 HttpNetworkSession::SocketPoolType pool_type,
52 const HttpNetworkSession::Params& params, 52 const HttpNetworkSession::Context& context,
53 const std::string& ssl_session_cache_shard) { 53 const std::string& ssl_session_cache_shard) {
54 // TODO(yutak): Differentiate WebSocket pool manager and allow more 54 // TODO(yutak): Differentiate WebSocket pool manager and allow more
55 // simultaneous connections for WebSockets. 55 // simultaneous connections for WebSockets.
56 return new ClientSocketPoolManagerImpl( 56 return new ClientSocketPoolManagerImpl(
57 params.net_log, 57 context.net_log,
58 params.client_socket_factory ? params.client_socket_factory 58 context.client_socket_factory ? context.client_socket_factory
59 : ClientSocketFactory::GetDefaultFactory(), 59 : ClientSocketFactory::GetDefaultFactory(),
60 params.socket_performance_watcher_factory, params.host_resolver, 60 context.socket_performance_watcher_factory, context.host_resolver,
61 params.cert_verifier, params.channel_id_service, 61 context.cert_verifier, context.channel_id_service,
62 params.transport_security_state, params.cert_transparency_verifier, 62 context.transport_security_state, context.cert_transparency_verifier,
63 params.ct_policy_enforcer, ssl_session_cache_shard, 63 context.ct_policy_enforcer, ssl_session_cache_shard,
64 params.ssl_config_service, pool_type); 64 context.ssl_config_service, pool_type);
65 } 65 }
66 66
67 } // unnamed namespace 67 } // unnamed namespace
68 68
69 // The maximum receive window sizes for HTTP/2 sessions and streams. 69 // The maximum receive window sizes for HTTP/2 sessions and streams.
70 const int32_t kSpdySessionMaxRecvWindowSize = 15 * 1024 * 1024; // 15 MB 70 const int32_t kSpdySessionMaxRecvWindowSize = 15 * 1024 * 1024; // 15 MB
71 const int32_t kSpdyStreamMaxRecvWindowSize = 6 * 1024 * 1024; // 6 MB 71 const int32_t kSpdyStreamMaxRecvWindowSize = 6 * 1024 * 1024; // 6 MB
72 72
73 namespace { 73 namespace {
74 74
(...skipping 15 matching lines...) Expand all
90 it = http2_settings.find(SETTINGS_INITIAL_WINDOW_SIZE); 90 it = http2_settings.find(SETTINGS_INITIAL_WINDOW_SIZE);
91 if (it == http2_settings.end()) 91 if (it == http2_settings.end())
92 http2_settings[SETTINGS_INITIAL_WINDOW_SIZE] = kSpdyStreamMaxRecvWindowSize; 92 http2_settings[SETTINGS_INITIAL_WINDOW_SIZE] = kSpdyStreamMaxRecvWindowSize;
93 93
94 return http2_settings; 94 return http2_settings;
95 } 95 }
96 96
97 } // unnamed namespace 97 } // unnamed namespace
98 98
99 HttpNetworkSession::Params::Params() 99 HttpNetworkSession::Params::Params()
100 : client_socket_factory(nullptr), 100 : enable_server_push_cancellation(false),
101 host_resolver(nullptr),
102 cert_verifier(nullptr),
103 enable_server_push_cancellation(false),
104 channel_id_service(nullptr),
105 transport_security_state(nullptr),
106 cert_transparency_verifier(nullptr),
107 ct_policy_enforcer(nullptr),
108 proxy_service(nullptr),
109 ssl_config_service(nullptr),
110 http_auth_handler_factory(nullptr),
111 net_log(nullptr),
112 socket_performance_watcher_factory(nullptr),
113 ignore_certificate_errors(false), 101 ignore_certificate_errors(false),
114 testing_fixed_http_port(0), 102 testing_fixed_http_port(0),
115 testing_fixed_https_port(0), 103 testing_fixed_https_port(0),
116 enable_tcp_fast_open_for_ssl(false), 104 enable_tcp_fast_open_for_ssl(false),
117 enable_user_alternate_protocol_ports(false), 105 enable_user_alternate_protocol_ports(false),
118 enable_spdy_ping_based_connection_checking(true), 106 enable_spdy_ping_based_connection_checking(true),
119 enable_http2(true), 107 enable_http2(true),
120 spdy_session_max_recv_window_size(kSpdySessionMaxRecvWindowSize), 108 spdy_session_max_recv_window_size(kSpdySessionMaxRecvWindowSize),
121 time_func(&base::TimeTicks::Now), 109 time_func(&base::TimeTicks::Now),
122 enable_http2_alternative_service(false), 110 enable_http2_alternative_service(false),
123 enable_quic(false), 111 enable_quic(false),
124 quic_max_packet_length(kDefaultMaxPacketSize), 112 quic_max_packet_length(kDefaultMaxPacketSize),
125 quic_clock(nullptr),
126 quic_random(nullptr),
127 quic_crypto_client_stream_factory(
128 QuicCryptoClientStreamFactory::GetDefaultFactory()),
129 quic_max_server_configs_stored_in_properties(0u), 113 quic_max_server_configs_stored_in_properties(0u),
130 mark_quic_broken_when_network_blackholes(false), 114 mark_quic_broken_when_network_blackholes(false),
131 retry_without_alt_svc_on_quic_errors(false), 115 retry_without_alt_svc_on_quic_errors(false),
132 quic_close_sessions_on_ip_change(false), 116 quic_close_sessions_on_ip_change(false),
133 quic_idle_connection_timeout_seconds(kIdleConnectionTimeoutSeconds), 117 quic_idle_connection_timeout_seconds(kIdleConnectionTimeoutSeconds),
134 quic_reduced_ping_timeout_seconds(kPingTimeoutSecs), 118 quic_reduced_ping_timeout_seconds(kPingTimeoutSecs),
135 quic_packet_reader_yield_after_duration_milliseconds( 119 quic_packet_reader_yield_after_duration_milliseconds(
136 kQuicYieldAfterDurationMilliseconds), 120 kQuicYieldAfterDurationMilliseconds),
137 quic_migrate_sessions_on_network_change(false), 121 quic_migrate_sessions_on_network_change(false),
138 quic_migrate_sessions_early(false), 122 quic_migrate_sessions_early(false),
139 quic_allow_server_migration(false), 123 quic_allow_server_migration(false),
140 quic_disable_bidirectional_streams(false), 124 quic_disable_bidirectional_streams(false),
141 quic_force_hol_blocking(false), 125 quic_force_hol_blocking(false),
142 quic_race_cert_verification(false), 126 quic_race_cert_verification(false),
143 quic_do_not_fragment(false), 127 quic_do_not_fragment(false),
144 quic_estimate_initial_rtt(false), 128 quic_estimate_initial_rtt(false),
145 proxy_delegate(nullptr),
146 enable_token_binding(false), 129 enable_token_binding(false),
147 http_09_on_non_default_ports_enabled(false) { 130 http_09_on_non_default_ports_enabled(false) {
148 quic_supported_versions.push_back(QUIC_VERSION_37); 131 quic_supported_versions.push_back(QUIC_VERSION_37);
149 } 132 }
150 133
151 HttpNetworkSession::Params::Params(const Params& other) = default; 134 HttpNetworkSession::Params::Params(const Params& other) = default;
152 135
153 HttpNetworkSession::Params::~Params() {} 136 HttpNetworkSession::Params::~Params() {}
154 137
138 HttpNetworkSession::Context::Context()
139 : client_socket_factory(nullptr),
140 host_resolver(nullptr),
141 cert_verifier(nullptr),
142 channel_id_service(nullptr),
143 transport_security_state(nullptr),
144 cert_transparency_verifier(nullptr),
145 ct_policy_enforcer(nullptr),
146 proxy_service(nullptr),
147 ssl_config_service(nullptr),
148 http_auth_handler_factory(nullptr),
149 net_log(nullptr),
150 socket_performance_watcher_factory(nullptr),
151 quic_clock(nullptr),
152 quic_random(nullptr),
153 quic_crypto_client_stream_factory(
154 QuicCryptoClientStreamFactory::GetDefaultFactory()),
155 proxy_delegate(nullptr) {}
156
157 HttpNetworkSession::Context::Context(const Context& other) = default;
158
159 HttpNetworkSession::Context::~Context() {}
160
155 // TODO(mbelshe): Move the socket factories into HttpStreamFactory. 161 // TODO(mbelshe): Move the socket factories into HttpStreamFactory.
156 HttpNetworkSession::HttpNetworkSession(const Params& params) 162 HttpNetworkSession::HttpNetworkSession(const Params& params,
157 : net_log_(params.net_log), 163 const Context& context)
158 http_server_properties_(params.http_server_properties), 164 : net_log_(context.net_log),
159 cert_verifier_(params.cert_verifier), 165 http_server_properties_(context.http_server_properties),
160 http_auth_handler_factory_(params.http_auth_handler_factory), 166 cert_verifier_(context.cert_verifier),
161 proxy_service_(params.proxy_service), 167 http_auth_handler_factory_(context.http_auth_handler_factory),
162 ssl_config_service_(params.ssl_config_service), 168 proxy_service_(context.proxy_service),
169 ssl_config_service_(context.ssl_config_service),
163 push_delegate_(nullptr), 170 push_delegate_(nullptr),
164 quic_stream_factory_( 171 quic_stream_factory_(
165 params.net_log, 172 context.net_log,
166 params.host_resolver, 173 context.host_resolver,
167 params.ssl_config_service, 174 context.ssl_config_service,
168 params.client_socket_factory 175 context.client_socket_factory
169 ? params.client_socket_factory 176 ? context.client_socket_factory
170 : ClientSocketFactory::GetDefaultFactory(), 177 : ClientSocketFactory::GetDefaultFactory(),
171 params.http_server_properties, 178 context.http_server_properties,
172 params.cert_verifier, 179 context.cert_verifier,
173 params.ct_policy_enforcer, 180 context.ct_policy_enforcer,
174 params.channel_id_service, 181 context.channel_id_service,
175 params.transport_security_state, 182 context.transport_security_state,
176 params.cert_transparency_verifier, 183 context.cert_transparency_verifier,
177 params.socket_performance_watcher_factory, 184 context.socket_performance_watcher_factory,
178 params.quic_crypto_client_stream_factory, 185 context.quic_crypto_client_stream_factory,
179 params.quic_random ? params.quic_random : QuicRandom::GetInstance(), 186 context.quic_random ? context.quic_random : QuicRandom::GetInstance(),
180 params.quic_clock ? params.quic_clock 187 context.quic_clock ? context.quic_clock
181 : QuicChromiumClock::GetInstance(), 188 : QuicChromiumClock::GetInstance(),
182 params.quic_max_packet_length, 189 params.quic_max_packet_length,
183 params.quic_user_agent_id, 190 params.quic_user_agent_id,
184 params.quic_supported_versions, 191 params.quic_supported_versions,
185 params.quic_max_server_configs_stored_in_properties > 0, 192 params.quic_max_server_configs_stored_in_properties > 0,
186 params.quic_close_sessions_on_ip_change, 193 params.quic_close_sessions_on_ip_change,
187 params.mark_quic_broken_when_network_blackholes, 194 params.mark_quic_broken_when_network_blackholes,
188 params.quic_idle_connection_timeout_seconds, 195 params.quic_idle_connection_timeout_seconds,
189 params.quic_reduced_ping_timeout_seconds, 196 params.quic_reduced_ping_timeout_seconds,
190 params.quic_packet_reader_yield_after_duration_milliseconds, 197 params.quic_packet_reader_yield_after_duration_milliseconds,
191 params.quic_migrate_sessions_on_network_change, 198 params.quic_migrate_sessions_on_network_change,
192 params.quic_migrate_sessions_early, 199 params.quic_migrate_sessions_early,
193 params.quic_allow_server_migration, 200 params.quic_allow_server_migration,
194 params.quic_force_hol_blocking, 201 params.quic_force_hol_blocking,
195 params.quic_race_cert_verification, 202 params.quic_race_cert_verification,
196 params.quic_do_not_fragment, 203 params.quic_do_not_fragment,
197 params.quic_estimate_initial_rtt, 204 params.quic_estimate_initial_rtt,
198 params.quic_connection_options, 205 params.quic_connection_options,
199 params.enable_token_binding), 206 params.enable_token_binding),
200 spdy_session_pool_(params.host_resolver, 207 spdy_session_pool_(context.host_resolver,
201 params.ssl_config_service, 208 context.ssl_config_service,
202 params.http_server_properties, 209 context.http_server_properties,
203 params.transport_security_state, 210 context.transport_security_state,
204 params.enable_spdy_ping_based_connection_checking, 211 params.enable_spdy_ping_based_connection_checking,
205 params.spdy_session_max_recv_window_size, 212 params.spdy_session_max_recv_window_size,
206 AddDefaultHttp2Settings(params.http2_settings), 213 AddDefaultHttp2Settings(params.http2_settings),
207 params.time_func, 214 params.time_func,
208 params.proxy_delegate), 215 context.proxy_delegate),
209 http_stream_factory_(new HttpStreamFactoryImpl(this, false)), 216 http_stream_factory_(new HttpStreamFactoryImpl(this, false)),
210 http_stream_factory_for_websocket_(new HttpStreamFactoryImpl(this, true)), 217 http_stream_factory_for_websocket_(new HttpStreamFactoryImpl(this, true)),
211 network_stream_throttler_(new NetworkThrottleManagerImpl()), 218 network_stream_throttler_(new NetworkThrottleManagerImpl()),
212 params_(params) { 219 params_(params),
220 context_(context) {
213 DCHECK(proxy_service_); 221 DCHECK(proxy_service_);
214 DCHECK(ssl_config_service_.get()); 222 DCHECK(ssl_config_service_.get());
215 CHECK(http_server_properties_); 223 CHECK(http_server_properties_);
216 224
217 const std::string ssl_session_cache_shard = 225 const std::string ssl_session_cache_shard =
218 "http_network_session/" + base::IntToString(g_next_shard_id.GetNext()); 226 "http_network_session/" + base::IntToString(g_next_shard_id.GetNext());
219 normal_socket_pool_manager_.reset(CreateSocketPoolManager( 227 normal_socket_pool_manager_.reset(CreateSocketPoolManager(
220 NORMAL_SOCKET_POOL, params, ssl_session_cache_shard)); 228 NORMAL_SOCKET_POOL, context, ssl_session_cache_shard));
221 websocket_socket_pool_manager_.reset(CreateSocketPoolManager( 229 websocket_socket_pool_manager_.reset(CreateSocketPoolManager(
222 WEBSOCKET_SOCKET_POOL, params, ssl_session_cache_shard)); 230 WEBSOCKET_SOCKET_POOL, context, ssl_session_cache_shard));
223 231
224 if (params_.enable_http2) { 232 if (params_.enable_http2) {
225 next_protos_.push_back(kProtoHTTP2); 233 next_protos_.push_back(kProtoHTTP2);
226 } 234 }
227 235
228 next_protos_.push_back(kProtoHTTP11); 236 next_protos_.push_back(kProtoHTTP11);
229 237
230 http_server_properties_->SetMaxServerConfigsStoredInProperties( 238 http_server_properties_->SetMaxServerConfigsStoredInProperties(
231 params.quic_max_server_configs_stored_in_properties); 239 params.quic_max_server_configs_stored_in_properties);
232 240
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 } 402 }
395 403
396 void HttpNetworkSession::GetSSLConfig(const HttpRequestInfo& request, 404 void HttpNetworkSession::GetSSLConfig(const HttpRequestInfo& request,
397 SSLConfig* server_config, 405 SSLConfig* server_config,
398 SSLConfig* proxy_config) const { 406 SSLConfig* proxy_config) const {
399 ssl_config_service_->GetSSLConfig(server_config); 407 ssl_config_service_->GetSSLConfig(server_config);
400 GetAlpnProtos(&server_config->alpn_protos); 408 GetAlpnProtos(&server_config->alpn_protos);
401 *proxy_config = *server_config; 409 *proxy_config = *server_config;
402 if (request.privacy_mode == PRIVACY_MODE_ENABLED) { 410 if (request.privacy_mode == PRIVACY_MODE_ENABLED) {
403 server_config->channel_id_enabled = false; 411 server_config->channel_id_enabled = false;
404 } else if (params_.enable_token_binding && params_.channel_id_service) { 412 } else if (params_.enable_token_binding && context_.channel_id_service) {
405 server_config->token_binding_params.push_back(TB_PARAM_ECDSAP256); 413 server_config->token_binding_params.push_back(TB_PARAM_ECDSAP256);
406 } 414 }
407 } 415 }
408 416
409 void HttpNetworkSession::DumpMemoryStats( 417 void HttpNetworkSession::DumpMemoryStats(
410 base::trace_event::ProcessMemoryDump* pmd, 418 base::trace_event::ProcessMemoryDump* pmd,
411 const std::string& parent_absolute_name) const { 419 const std::string& parent_absolute_name) const {
412 std::string name = base::StringPrintf("net/http_network_session_0x%" PRIxPTR, 420 std::string name = base::StringPrintf("net/http_network_session_0x%" PRIxPTR,
413 reinterpret_cast<uintptr_t>(this)); 421 reinterpret_cast<uintptr_t>(this));
414 base::trace_event::MemoryAllocatorDump* http_network_session_dump = 422 base::trace_event::MemoryAllocatorDump* http_network_session_dump =
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 CloseIdleConnections(); 476 CloseIdleConnections();
469 break; 477 break;
470 } 478 }
471 } 479 }
472 480
473 void HttpNetworkSession::OnPurgeMemory() { 481 void HttpNetworkSession::OnPurgeMemory() {
474 CloseIdleConnections(); 482 CloseIdleConnections();
475 } 483 }
476 484
477 } // namespace net 485 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_session.h ('k') | net/http/http_network_transaction.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698