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

Side by Side Diff: net/http/http_proxy_client_socket_pool.h

Issue 517693002: Add embedder-specific headers to HTTP CONNECT tunnel request (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added tests Created 6 years, 3 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
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 #ifndef NET_HTTP_HTTP_PROXY_CLIENT_SOCKET_POOL_H_ 5 #ifndef NET_HTTP_HTTP_PROXY_CLIENT_SOCKET_POOL_H_
6 #define NET_HTTP_HTTP_PROXY_CLIENT_SOCKET_POOL_H_ 6 #define NET_HTTP_HTTP_PROXY_CLIENT_SOCKET_POOL_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/callback.h"
11 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
14 #include "base/time/time.h" 15 #include "base/time/time.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/http/http_auth.h" 18 #include "net/http/http_auth.h"
18 #include "net/http/http_response_info.h" 19 #include "net/http/http_response_info.h"
19 #include "net/http/proxy_client_socket.h" 20 #include "net/http/proxy_client_socket.h"
20 #include "net/socket/client_socket_pool.h" 21 #include "net/socket/client_socket_pool.h"
(...skipping 23 matching lines...) Expand all
44 public: 45 public:
45 HttpProxySocketParams( 46 HttpProxySocketParams(
46 const scoped_refptr<TransportSocketParams>& transport_params, 47 const scoped_refptr<TransportSocketParams>& transport_params,
47 const scoped_refptr<SSLSocketParams>& ssl_params, 48 const scoped_refptr<SSLSocketParams>& ssl_params,
48 const GURL& request_url, 49 const GURL& request_url,
49 const std::string& user_agent, 50 const std::string& user_agent,
50 const HostPortPair& endpoint, 51 const HostPortPair& endpoint,
51 HttpAuthCache* http_auth_cache, 52 HttpAuthCache* http_auth_cache,
52 HttpAuthHandlerFactory* http_auth_handler_factory, 53 HttpAuthHandlerFactory* http_auth_handler_factory,
53 SpdySessionPool* spdy_session_pool, 54 SpdySessionPool* spdy_session_pool,
54 bool tunnel); 55 bool tunnel,
56 const base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>&
57 before_proxy_tunnel_request_callback);
55 58
56 const scoped_refptr<TransportSocketParams>& transport_params() const { 59 const scoped_refptr<TransportSocketParams>& transport_params() const {
57 return transport_params_; 60 return transport_params_;
58 } 61 }
59 const scoped_refptr<SSLSocketParams>& ssl_params() const { 62 const scoped_refptr<SSLSocketParams>& ssl_params() const {
60 return ssl_params_; 63 return ssl_params_;
61 } 64 }
62 const GURL& request_url() const { return request_url_; } 65 const GURL& request_url() const { return request_url_; }
63 const std::string& user_agent() const { return user_agent_; } 66 const std::string& user_agent() const { return user_agent_; }
64 const HostPortPair& endpoint() const { return endpoint_; } 67 const HostPortPair& endpoint() const { return endpoint_; }
65 HttpAuthCache* http_auth_cache() const { return http_auth_cache_; } 68 HttpAuthCache* http_auth_cache() const { return http_auth_cache_; }
66 HttpAuthHandlerFactory* http_auth_handler_factory() const { 69 HttpAuthHandlerFactory* http_auth_handler_factory() const {
67 return http_auth_handler_factory_; 70 return http_auth_handler_factory_;
68 } 71 }
69 SpdySessionPool* spdy_session_pool() { 72 SpdySessionPool* spdy_session_pool() {
70 return spdy_session_pool_; 73 return spdy_session_pool_;
71 } 74 }
72 const HostResolver::RequestInfo& destination() const; 75 const HostResolver::RequestInfo& destination() const;
73 bool tunnel() const { return tunnel_; } 76 bool tunnel() const { return tunnel_; }
74 bool ignore_limits() const { return ignore_limits_; } 77 bool ignore_limits() const { return ignore_limits_; }
75 78
79 const base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>&
80 before_proxy_tunnel_request_callback() const {
81 return before_proxy_tunnel_request_callback_;
82 }
83
76 private: 84 private:
77 friend class base::RefCounted<HttpProxySocketParams>; 85 friend class base::RefCounted<HttpProxySocketParams>;
78 ~HttpProxySocketParams(); 86 ~HttpProxySocketParams();
79 87
80 const scoped_refptr<TransportSocketParams> transport_params_; 88 const scoped_refptr<TransportSocketParams> transport_params_;
81 const scoped_refptr<SSLSocketParams> ssl_params_; 89 const scoped_refptr<SSLSocketParams> ssl_params_;
82 SpdySessionPool* spdy_session_pool_; 90 SpdySessionPool* spdy_session_pool_;
83 const GURL request_url_; 91 const GURL request_url_;
84 const std::string user_agent_; 92 const std::string user_agent_;
85 const HostPortPair endpoint_; 93 const HostPortPair endpoint_;
86 HttpAuthCache* const http_auth_cache_; 94 HttpAuthCache* const http_auth_cache_;
87 HttpAuthHandlerFactory* const http_auth_handler_factory_; 95 HttpAuthHandlerFactory* const http_auth_handler_factory_;
88 const bool tunnel_; 96 const bool tunnel_;
89 bool ignore_limits_; 97 bool ignore_limits_;
98 base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>
99 before_proxy_tunnel_request_callback_;
90 100
91 DISALLOW_COPY_AND_ASSIGN(HttpProxySocketParams); 101 DISALLOW_COPY_AND_ASSIGN(HttpProxySocketParams);
92 }; 102 };
93 103
94 // HttpProxyConnectJob optionally establishes a tunnel through the proxy 104 // HttpProxyConnectJob optionally establishes a tunnel through the proxy
95 // server after connecting the underlying transport socket. 105 // server after connecting the underlying transport socket.
96 class HttpProxyConnectJob : public ConnectJob { 106 class HttpProxyConnectJob : public ConnectJob {
97 public: 107 public:
98 HttpProxyConnectJob(const std::string& group_name, 108 HttpProxyConnectJob(const std::string& group_name,
99 RequestPriority priority, 109 RequestPriority priority,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 public: 189 public:
180 typedef HttpProxySocketParams SocketParams; 190 typedef HttpProxySocketParams SocketParams;
181 191
182 HttpProxyClientSocketPool( 192 HttpProxyClientSocketPool(
183 int max_sockets, 193 int max_sockets,
184 int max_sockets_per_group, 194 int max_sockets_per_group,
185 ClientSocketPoolHistograms* histograms, 195 ClientSocketPoolHistograms* histograms,
186 HostResolver* host_resolver, 196 HostResolver* host_resolver,
187 TransportClientSocketPool* transport_pool, 197 TransportClientSocketPool* transport_pool,
188 SSLClientSocketPool* ssl_pool, 198 SSLClientSocketPool* ssl_pool,
199 const base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>&
200 before_proxy_tunnel_request_callback,
189 NetLog* net_log); 201 NetLog* net_log);
190 202
191 virtual ~HttpProxyClientSocketPool(); 203 virtual ~HttpProxyClientSocketPool();
192 204
193 // ClientSocketPool implementation. 205 // ClientSocketPool implementation.
194 virtual int RequestSocket(const std::string& group_name, 206 virtual int RequestSocket(const std::string& group_name,
195 const void* connect_params, 207 const void* connect_params,
196 RequestPriority priority, 208 RequestPriority priority,
197 ClientSocketHandle* handle, 209 ClientSocketHandle* handle,
198 const CompletionCallback& callback, 210 const CompletionCallback& callback,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 256
245 private: 257 private:
246 typedef ClientSocketPoolBase<HttpProxySocketParams> PoolBase; 258 typedef ClientSocketPoolBase<HttpProxySocketParams> PoolBase;
247 259
248 class HttpProxyConnectJobFactory : public PoolBase::ConnectJobFactory { 260 class HttpProxyConnectJobFactory : public PoolBase::ConnectJobFactory {
249 public: 261 public:
250 HttpProxyConnectJobFactory( 262 HttpProxyConnectJobFactory(
251 TransportClientSocketPool* transport_pool, 263 TransportClientSocketPool* transport_pool,
252 SSLClientSocketPool* ssl_pool, 264 SSLClientSocketPool* ssl_pool,
253 HostResolver* host_resolver, 265 HostResolver* host_resolver,
266 base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>
267 before_proxy_tunnel_request_callback,
254 NetLog* net_log); 268 NetLog* net_log);
255 269
270 virtual ~HttpProxyConnectJobFactory();
271
256 // ClientSocketPoolBase::ConnectJobFactory methods. 272 // ClientSocketPoolBase::ConnectJobFactory methods.
257 virtual scoped_ptr<ConnectJob> NewConnectJob( 273 virtual scoped_ptr<ConnectJob> NewConnectJob(
258 const std::string& group_name, 274 const std::string& group_name,
259 const PoolBase::Request& request, 275 const PoolBase::Request& request,
260 ConnectJob::Delegate* delegate) const OVERRIDE; 276 ConnectJob::Delegate* delegate) const OVERRIDE;
261 277
262 virtual base::TimeDelta ConnectionTimeout() const OVERRIDE; 278 virtual base::TimeDelta ConnectionTimeout() const OVERRIDE;
263 279
264 private: 280 private:
265 TransportClientSocketPool* const transport_pool_; 281 TransportClientSocketPool* const transport_pool_;
266 SSLClientSocketPool* const ssl_pool_; 282 SSLClientSocketPool* const ssl_pool_;
267 HostResolver* const host_resolver_; 283 HostResolver* const host_resolver_;
284 base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>
285 before_proxy_tunnel_request_callback_;
268 NetLog* net_log_; 286 NetLog* net_log_;
269 base::TimeDelta timeout_; 287 base::TimeDelta timeout_;
270 288
271 DISALLOW_COPY_AND_ASSIGN(HttpProxyConnectJobFactory); 289 DISALLOW_COPY_AND_ASSIGN(HttpProxyConnectJobFactory);
272 }; 290 };
273 291
274 TransportClientSocketPool* const transport_pool_; 292 TransportClientSocketPool* const transport_pool_;
275 SSLClientSocketPool* const ssl_pool_; 293 SSLClientSocketPool* const ssl_pool_;
276 PoolBase base_; 294 PoolBase base_;
277 295
278 DISALLOW_COPY_AND_ASSIGN(HttpProxyClientSocketPool); 296 DISALLOW_COPY_AND_ASSIGN(HttpProxyClientSocketPool);
279 }; 297 };
280 298
281 } // namespace net 299 } // namespace net
282 300
283 #endif // NET_HTTP_HTTP_PROXY_CLIENT_SOCKET_POOL_H_ 301 #endif // NET_HTTP_HTTP_PROXY_CLIENT_SOCKET_POOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698