| 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_STREAM_FACTORY_IMPL_H_ |    5 #ifndef NET_HTTP_HTTP_STREAM_FACTORY_IMPL_H_ | 
|    6 #define NET_HTTP_HTTP_STREAM_FACTORY_IMPL_H_ |    6 #define NET_HTTP_HTTP_STREAM_FACTORY_IMPL_H_ | 
|    7  |    7  | 
|    8 #include <stddef.h> |    8 #include <stddef.h> | 
|    9  |    9  | 
|   10 #include <map> |   10 #include <map> | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|   21 #include "net/http/http_stream_factory.h" |   21 #include "net/http/http_stream_factory.h" | 
|   22 #include "net/log/net_log_source.h" |   22 #include "net/log/net_log_source.h" | 
|   23 #include "net/proxy/proxy_server.h" |   23 #include "net/proxy/proxy_server.h" | 
|   24 #include "net/socket/ssl_client_socket.h" |   24 #include "net/socket/ssl_client_socket.h" | 
|   25 #include "net/spdy/chromium/spdy_session_key.h" |   25 #include "net/spdy/chromium/spdy_session_key.h" | 
|   26  |   26  | 
|   27 namespace net { |   27 namespace net { | 
|   28  |   28  | 
|   29 class HttpNetworkSession; |   29 class HttpNetworkSession; | 
|   30 class ProxyInfo; |   30 class ProxyInfo; | 
|   31 class SpdySession; |  | 
|   32 class NetLogWithSource; |   31 class NetLogWithSource; | 
|   33  |   32  | 
|   34 class NET_EXPORT_PRIVATE HttpStreamFactoryImpl : public HttpStreamFactory { |   33 class NET_EXPORT_PRIVATE HttpStreamFactoryImpl : public HttpStreamFactory { | 
|   35  public: |   34  public: | 
|   36   class NET_EXPORT_PRIVATE Job; |   35   class NET_EXPORT_PRIVATE Job; | 
|   37   class NET_EXPORT_PRIVATE JobController; |   36   class NET_EXPORT_PRIVATE JobController; | 
|   38   class NET_EXPORT_PRIVATE JobFactory; |   37   class NET_EXPORT_PRIVATE JobFactory; | 
|   39   class NET_EXPORT_PRIVATE Request; |   38   class NET_EXPORT_PRIVATE Request; | 
|   40   // RequestStream may only be called if |for_websockets| is false. |   39   // RequestStream may only be called if |for_websockets| is false. | 
|   41   // RequestWebSocketHandshakeStream may only be called if |for_websockets| |   40   // RequestWebSocketHandshakeStream may only be called if |for_websockets| | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   85     ALTERNATIVE, |   84     ALTERNATIVE, | 
|   86     PRECONNECT, |   85     PRECONNECT, | 
|   87   }; |   86   }; | 
|   88  |   87  | 
|   89  private: |   88  private: | 
|   90   FRIEND_TEST_ALL_PREFIXES(HttpStreamFactoryImplRequestTest, SetPriority); |   89   FRIEND_TEST_ALL_PREFIXES(HttpStreamFactoryImplRequestTest, SetPriority); | 
|   91   FRIEND_TEST_ALL_PREFIXES(HttpStreamFactoryImplRequestTest, DelayMainJob); |   90   FRIEND_TEST_ALL_PREFIXES(HttpStreamFactoryImplRequestTest, DelayMainJob); | 
|   92  |   91  | 
|   93   friend class HttpStreamFactoryImplPeer; |   92   friend class HttpStreamFactoryImplPeer; | 
|   94  |   93  | 
|   95   typedef std::set<Request*> RequestSet; |  | 
|   96   typedef std::map<SpdySessionKey, RequestSet> SpdySessionRequestMap; |  | 
|   97   typedef std::set<std::unique_ptr<JobController>> JobControllerSet; |   94   typedef std::set<std::unique_ptr<JobController>> JobControllerSet; | 
|   98  |   95  | 
|   99   // |PreconnectingProxyServer| holds information of a connection to a single |   96   // |PreconnectingProxyServer| holds information of a connection to a single | 
|  100   // proxy server. |   97   // proxy server. | 
|  101   struct PreconnectingProxyServer { |   98   struct PreconnectingProxyServer { | 
|  102     PreconnectingProxyServer(ProxyServer proxy_server, |   99     PreconnectingProxyServer(ProxyServer proxy_server, | 
|  103                              PrivacyMode privacy_mode); |  100                              PrivacyMode privacy_mode); | 
|  104  |  101  | 
|  105     // Needed to be an element of std::set. |  102     // Needed to be an element of std::set. | 
|  106     bool operator<(const PreconnectingProxyServer& other) const; |  103     bool operator<(const PreconnectingProxyServer& other) const; | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|  126       RequestPriority priority, |  123       RequestPriority priority, | 
|  127       const SSLConfig& server_ssl_config, |  124       const SSLConfig& server_ssl_config, | 
|  128       const SSLConfig& proxy_ssl_config, |  125       const SSLConfig& proxy_ssl_config, | 
|  129       HttpStreamRequest::Delegate* delegate, |  126       HttpStreamRequest::Delegate* delegate, | 
|  130       WebSocketHandshakeStreamBase::CreateHelper* create_helper, |  127       WebSocketHandshakeStreamBase::CreateHelper* create_helper, | 
|  131       HttpStreamRequest::StreamType stream_type, |  128       HttpStreamRequest::StreamType stream_type, | 
|  132       bool enable_ip_based_pooling, |  129       bool enable_ip_based_pooling, | 
|  133       bool enable_alternative_services, |  130       bool enable_alternative_services, | 
|  134       const NetLogWithSource& net_log); |  131       const NetLogWithSource& net_log); | 
|  135  |  132  | 
|  136   // Called when a SpdySession is ready. It will find appropriate Requests and |  | 
|  137   // fulfill them. |direct| indicates whether or not |spdy_session| uses a |  | 
|  138   // proxy. |  | 
|  139   void OnNewSpdySessionReady(const base::WeakPtr<SpdySession>& spdy_session, |  | 
|  140                              bool direct, |  | 
|  141                              const SSLConfig& used_ssl_config, |  | 
|  142                              const ProxyInfo& used_proxy_info, |  | 
|  143                              bool was_alpn_negotiated, |  | 
|  144                              NextProto negotiated_protocol, |  | 
|  145                              bool using_spdy, |  | 
|  146                              NetLogSource source_dependency); |  | 
|  147  |  | 
|  148   // Called when the Job detects that the endpoint indicated by the |  133   // Called when the Job detects that the endpoint indicated by the | 
|  149   // Alternate-Protocol does not work. Lets the factory update |  134   // Alternate-Protocol does not work. Lets the factory update | 
|  150   // HttpAlternateProtocols with the failure and resets the SPDY session key. |  135   // HttpAlternateProtocols with the failure and resets the SPDY session key. | 
|  151   void OnBrokenAlternateProtocol(const Job*, const HostPortPair& origin); |  136   void OnBrokenAlternateProtocol(const Job*, const HostPortPair& origin); | 
|  152  |  137  | 
|  153   // Called when the Preconnect completes. Used for testing. |  138   // Called when the Preconnect completes. Used for testing. | 
|  154   virtual void OnPreconnectsCompleteInternal() {} |  139   virtual void OnPreconnectsCompleteInternal() {} | 
|  155  |  140  | 
|  156   // Called when the JobController finishes service. Delete the JobController |  141   // Called when the JobController finishes service. Delete the JobController | 
|  157   // from |job_controller_set_|. |  142   // from |job_controller_set_|. | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
|  186   // its work. |  171   // its work. | 
|  187   JobControllerSet job_controller_set_; |  172   JobControllerSet job_controller_set_; | 
|  188  |  173  | 
|  189   // Factory used by job controllers for creating jobs. |  174   // Factory used by job controllers for creating jobs. | 
|  190   std::unique_ptr<JobFactory> job_factory_; |  175   std::unique_ptr<JobFactory> job_factory_; | 
|  191  |  176  | 
|  192   // Set of proxy servers that support request priorities to which subsequent |  177   // Set of proxy servers that support request priorities to which subsequent | 
|  193   // preconnects should be skipped. |  178   // preconnects should be skipped. | 
|  194   std::set<PreconnectingProxyServer> preconnecting_proxy_servers_; |  179   std::set<PreconnectingProxyServer> preconnecting_proxy_servers_; | 
|  195  |  180  | 
|  196   SpdySessionRequestMap spdy_session_request_map_; |  | 
|  197  |  | 
|  198   const bool for_websockets_; |  181   const bool for_websockets_; | 
|  199  |  182  | 
|  200   // The count of JobControllers that was most recently logged to histograms. |  183   // The count of JobControllers that was most recently logged to histograms. | 
|  201   size_t last_logged_job_controller_count_; |  184   size_t last_logged_job_controller_count_; | 
|  202  |  185  | 
|  203   DISALLOW_COPY_AND_ASSIGN(HttpStreamFactoryImpl); |  186   DISALLOW_COPY_AND_ASSIGN(HttpStreamFactoryImpl); | 
|  204 }; |  187 }; | 
|  205  |  188  | 
|  206 }  // namespace net |  189 }  // namespace net | 
|  207  |  190  | 
|  208 #endif  // NET_HTTP_HTTP_STREAM_FACTORY_IMPL_H_ |  191 #endif  // NET_HTTP_HTTP_STREAM_FACTORY_IMPL_H_ | 
| OLD | NEW |