| 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 #ifndef NET_HTTP_HTTP_NETWORK_SESSION_H_ | 5 #ifndef NET_HTTP_HTTP_NETWORK_SESSION_H_ |
| 6 #define NET_HTTP_HTTP_NETWORK_SESSION_H_ | 6 #define NET_HTTP_HTTP_NETWORK_SESSION_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> |
| 10 | 11 |
| 11 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
| 12 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
| 13 #include "base/memory/weak_ptr.h" | 14 #include "base/memory/weak_ptr.h" |
| 14 #include "base/threading/non_thread_safe.h" | 15 #include "base/threading/non_thread_safe.h" |
| 15 #include "net/base/host_port_pair.h" | 16 #include "net/base/host_port_pair.h" |
| 16 #include "net/base/net_export.h" | 17 #include "net/base/net_export.h" |
| 17 #include "net/dns/host_resolver.h" | 18 #include "net/dns/host_resolver.h" |
| 18 #include "net/http/http_auth_cache.h" | 19 #include "net/http/http_auth_cache.h" |
| 19 #include "net/http/http_stream_factory.h" | 20 #include "net/http/http_stream_factory.h" |
| 20 #include "net/quic/quic_stream_factory.h" | 21 #include "net/quic/quic_stream_factory.h" |
| 22 #include "net/socket/next_proto.h" |
| 21 #include "net/spdy/spdy_session_pool.h" | 23 #include "net/spdy/spdy_session_pool.h" |
| 22 #include "net/ssl/ssl_client_auth_cache.h" | 24 #include "net/ssl/ssl_client_auth_cache.h" |
| 23 | 25 |
| 24 namespace base { | 26 namespace base { |
| 25 class Value; | 27 class Value; |
| 26 } | 28 } |
| 27 | 29 |
| 28 namespace net { | 30 namespace net { |
| 29 | 31 |
| 30 class CertVerifier; | 32 class CertVerifier; |
| 31 class ClientSocketFactory; | 33 class ClientSocketFactory; |
| 32 class ClientSocketPoolManager; | 34 class ClientSocketPoolManager; |
| 35 class CTVerifier; |
| 33 class HostResolver; | 36 class HostResolver; |
| 34 class HpackHuffmanAggregator; | 37 class HpackHuffmanAggregator; |
| 35 class HttpAuthHandlerFactory; | 38 class HttpAuthHandlerFactory; |
| 36 class HttpNetworkSessionPeer; | 39 class HttpNetworkSessionPeer; |
| 37 class HttpProxyClientSocketPool; | 40 class HttpProxyClientSocketPool; |
| 38 class HttpResponseBodyDrainer; | 41 class HttpResponseBodyDrainer; |
| 39 class HttpServerProperties; | 42 class HttpServerProperties; |
| 40 class NetLog; | 43 class NetLog; |
| 41 class NetworkDelegate; | 44 class NetworkDelegate; |
| 42 class ServerBoundCertService; | 45 class ServerBoundCertService; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 71 HttpAuthHandlerFactory* http_auth_handler_factory; | 74 HttpAuthHandlerFactory* http_auth_handler_factory; |
| 72 NetworkDelegate* network_delegate; | 75 NetworkDelegate* network_delegate; |
| 73 base::WeakPtr<HttpServerProperties> http_server_properties; | 76 base::WeakPtr<HttpServerProperties> http_server_properties; |
| 74 NetLog* net_log; | 77 NetLog* net_log; |
| 75 HostMappingRules* host_mapping_rules; | 78 HostMappingRules* host_mapping_rules; |
| 76 bool force_http_pipelining; | 79 bool force_http_pipelining; |
| 77 bool ignore_certificate_errors; | 80 bool ignore_certificate_errors; |
| 78 bool http_pipelining_enabled; | 81 bool http_pipelining_enabled; |
| 79 uint16 testing_fixed_http_port; | 82 uint16 testing_fixed_http_port; |
| 80 uint16 testing_fixed_https_port; | 83 uint16 testing_fixed_https_port; |
| 84 |
| 81 bool force_spdy_single_domain; | 85 bool force_spdy_single_domain; |
| 82 bool enable_spdy_compression; | 86 bool enable_spdy_compression; |
| 83 bool enable_spdy_ping_based_connection_checking; | 87 bool enable_spdy_ping_based_connection_checking; |
| 84 NextProto spdy_default_protocol; | 88 NextProto spdy_default_protocol; |
| 89 // The protocols supported by NPN (next protocol negotiation) during the |
| 90 // SSL handshake as well as by HTTP Alternate-Protocol. |
| 91 // TODO(mmenke): This is currently empty by default, and alternate |
| 92 // protocols are disabled. We should use some reasonable |
| 93 // defaults. |
| 94 NextProtoVector next_protos; |
| 85 size_t spdy_stream_initial_recv_window_size; | 95 size_t spdy_stream_initial_recv_window_size; |
| 86 size_t spdy_initial_max_concurrent_streams; | 96 size_t spdy_initial_max_concurrent_streams; |
| 87 size_t spdy_max_concurrent_streams_limit; | 97 size_t spdy_max_concurrent_streams_limit; |
| 88 SpdySessionPool::TimeFunc time_func; | 98 SpdySessionPool::TimeFunc time_func; |
| 89 std::string trusted_spdy_proxy; | 99 std::string trusted_spdy_proxy; |
| 100 // Controls whether or not ssl is used when in SPDY mode. |
| 101 bool force_spdy_over_ssl; |
| 102 // Controls whether or not SPDY is used without NPN. |
| 103 bool force_spdy_always; |
| 104 // URLs to exclude from forced SPDY. |
| 105 std::set<HostPortPair> forced_spdy_exclusions; |
| 106 // Noe: Using this in the case of NPN for HTTP only results in the browser |
| 107 // trying SSL and then falling back to http. |
| 108 bool use_alternate_protocols; |
| 109 |
| 90 bool enable_quic; | 110 bool enable_quic; |
| 91 bool enable_quic_https; | 111 bool enable_quic_https; |
| 92 bool enable_quic_port_selection; | 112 bool enable_quic_port_selection; |
| 93 bool enable_quic_pacing; | 113 bool enable_quic_pacing; |
| 94 bool enable_quic_time_based_loss_detection; | 114 bool enable_quic_time_based_loss_detection; |
| 95 bool enable_quic_persist_server_info; | 115 bool enable_quic_persist_server_info; |
| 96 HostPortPair origin_to_force_quic_on; | 116 HostPortPair origin_to_force_quic_on; |
| 97 QuicClock* quic_clock; // Will be owned by QuicStreamFactory. | 117 QuicClock* quic_clock; // Will be owned by QuicStreamFactory. |
| 98 QuicRandom* quic_random; | 118 QuicRandom* quic_random; |
| 99 size_t quic_max_packet_length; | 119 size_t quic_max_packet_length; |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 | 195 |
| 176 bool force_http_pipelining() const { return force_http_pipelining_; } | 196 bool force_http_pipelining() const { return force_http_pipelining_; } |
| 177 | 197 |
| 178 // Returns the original Params used to construct this session. | 198 // Returns the original Params used to construct this session. |
| 179 const Params& params() const { return params_; } | 199 const Params& params() const { return params_; } |
| 180 | 200 |
| 181 void set_http_pipelining_enabled(bool enable) { | 201 void set_http_pipelining_enabled(bool enable) { |
| 182 params_.http_pipelining_enabled = enable; | 202 params_.http_pipelining_enabled = enable; |
| 183 } | 203 } |
| 184 | 204 |
| 205 bool IsProtocolEnabled(AlternateProtocol protocol) const; |
| 206 |
| 207 void GetNextProtos(std::vector<std::string>* next_protos) const; |
| 208 |
| 209 // Convenience function for searching through |params_| for |
| 210 // |forced_spdy_exclusions|. |
| 211 bool HasSpdyExclusion(HostPortPair host_port_pair) const; |
| 212 |
| 185 private: | 213 private: |
| 186 friend class base::RefCounted<HttpNetworkSession>; | 214 friend class base::RefCounted<HttpNetworkSession>; |
| 187 friend class HttpNetworkSessionPeer; | 215 friend class HttpNetworkSessionPeer; |
| 188 | 216 |
| 189 ~HttpNetworkSession(); | 217 ~HttpNetworkSession(); |
| 190 | 218 |
| 191 ClientSocketPoolManager* GetSocketPoolManager(SocketPoolType pool_type); | 219 ClientSocketPoolManager* GetSocketPoolManager(SocketPoolType pool_type); |
| 192 | 220 |
| 193 NetLog* const net_log_; | 221 NetLog* const net_log_; |
| 194 NetworkDelegate* const network_delegate_; | 222 NetworkDelegate* const network_delegate_; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 207 scoped_ptr<ClientSocketPoolManager> websocket_socket_pool_manager_; | 235 scoped_ptr<ClientSocketPoolManager> websocket_socket_pool_manager_; |
| 208 QuicStreamFactory quic_stream_factory_; | 236 QuicStreamFactory quic_stream_factory_; |
| 209 SpdySessionPool spdy_session_pool_; | 237 SpdySessionPool spdy_session_pool_; |
| 210 scoped_ptr<HttpStreamFactory> http_stream_factory_; | 238 scoped_ptr<HttpStreamFactory> http_stream_factory_; |
| 211 scoped_ptr<HttpStreamFactory> http_stream_factory_for_websocket_; | 239 scoped_ptr<HttpStreamFactory> http_stream_factory_for_websocket_; |
| 212 std::set<HttpResponseBodyDrainer*> response_drainers_; | 240 std::set<HttpResponseBodyDrainer*> response_drainers_; |
| 213 | 241 |
| 214 // TODO(jgraettinger): Remove when Huffman collection is complete. | 242 // TODO(jgraettinger): Remove when Huffman collection is complete. |
| 215 scoped_ptr<HpackHuffmanAggregator> huffman_aggregator_; | 243 scoped_ptr<HpackHuffmanAggregator> huffman_aggregator_; |
| 216 | 244 |
| 245 std::vector<std::string> next_protos_; |
| 246 bool enabled_protocols_[NUM_VALID_ALTERNATE_PROTOCOLS]; |
| 247 |
| 217 Params params_; | 248 Params params_; |
| 218 }; | 249 }; |
| 219 | 250 |
| 220 } // namespace net | 251 } // namespace net |
| 221 | 252 |
| 222 #endif // NET_HTTP_HTTP_NETWORK_SESSION_H_ | 253 #endif // NET_HTTP_HTTP_NETWORK_SESSION_H_ |
| OLD | NEW |