Index: net/http/http_proxy_client_socket_pool.h |
=================================================================== |
--- net/http/http_proxy_client_socket_pool.h (revision 57349) |
+++ net/http/http_proxy_client_socket_pool.h (working copy) |
@@ -22,12 +22,19 @@ |
class HostResolver; |
class HttpNetworkSession; |
+class SSLClientSocketPool; |
+class SSLSocketParams; |
class TCPClientSocketPool; |
class TCPSocketParams; |
+// HttpProxySocketParams only needs the socket params for one of the proxy |
+// types. The other param must be NULL. When using an HTTP Proxy, |
+// |tcp_params| must be set. When using an HTTPS Proxy, |ssl_params| |
+// must be set. |
class HttpProxySocketParams : public base::RefCounted<HttpProxySocketParams> { |
public: |
- HttpProxySocketParams(const scoped_refptr<TCPSocketParams>& proxy_server, |
+ HttpProxySocketParams(const scoped_refptr<TCPSocketParams>& tcp_params, |
+ const scoped_refptr<SSLSocketParams>& ssl_params, |
const GURL& request_url, |
const std::string& user_agent, |
HostPortPair endpoint, |
@@ -37,12 +44,16 @@ |
const scoped_refptr<TCPSocketParams>& tcp_params() const { |
return tcp_params_; |
} |
+ const scoped_refptr<SSLSocketParams>& ssl_params() const { |
+ return ssl_params_; |
+ } |
const GURL& request_url() const { return request_url_; } |
const std::string& user_agent() const { return user_agent_; } |
const HostPortPair& endpoint() const { return endpoint_; } |
const scoped_refptr<HttpNetworkSession>& session() { |
return session_; |
} |
+ const HostResolver::RequestInfo& destination() const; |
bool tunnel() const { return tunnel_; } |
private: |
@@ -50,6 +61,7 @@ |
~HttpProxySocketParams(); |
const scoped_refptr<TCPSocketParams> tcp_params_; |
+ const scoped_refptr<SSLSocketParams> ssl_params_; |
const GURL request_url_; |
const std::string user_agent_; |
const HostPortPair endpoint_; |
@@ -67,6 +79,7 @@ |
const scoped_refptr<HttpProxySocketParams>& params, |
const base::TimeDelta& timeout_duration, |
const scoped_refptr<TCPClientSocketPool>& tcp_pool, |
+ const scoped_refptr<SSLClientSocketPool>& ssl_pool, |
const scoped_refptr<HostResolver> &host_resolver, |
Delegate* delegate, |
NetLog* net_log); |
@@ -79,6 +92,8 @@ |
enum State { |
kStateTCPConnect, |
kStateTCPConnectComplete, |
+ kStateSSLConnect, |
+ kStateSSLConnectComplete, |
kStateHttpProxyConnect, |
kStateHttpProxyConnectComplete, |
kStateNone, |
@@ -98,19 +113,25 @@ |
// Runs the state transition loop. |
int DoLoop(int result); |
+ // Connecting to HTTP Proxy |
int DoTCPConnect(); |
int DoTCPConnectComplete(int result); |
+ // Connecting to HTTPS Proxy |
+ int DoSSLConnect(); |
+ int DoSSLConnectComplete(int result); |
+ |
int DoHttpProxyConnect(); |
int DoHttpProxyConnectComplete(int result); |
scoped_refptr<HttpProxySocketParams> params_; |
const scoped_refptr<TCPClientSocketPool> tcp_pool_; |
+ const scoped_refptr<SSLClientSocketPool> ssl_pool_; |
const scoped_refptr<HostResolver> resolver_; |
State next_state_; |
CompletionCallbackImpl<HttpProxyConnectJob> callback_; |
- scoped_ptr<ClientSocketHandle> tcp_socket_handle_; |
- scoped_ptr<ClientSocket> socket_; |
+ scoped_ptr<ClientSocketHandle> transport_socket_handle_; |
+ scoped_ptr<ClientSocket> transport_socket_; |
DISALLOW_COPY_AND_ASSIGN(HttpProxyConnectJob); |
}; |
@@ -123,6 +144,7 @@ |
const scoped_refptr<ClientSocketPoolHistograms>& histograms, |
const scoped_refptr<HostResolver>& host_resolver, |
const scoped_refptr<TCPClientSocketPool>& tcp_pool, |
+ const scoped_refptr<SSLClientSocketPool>& ssl_pool, |
NetLog* net_log); |
// ClientSocketPool methods: |
@@ -171,25 +193,23 @@ |
public: |
HttpProxyConnectJobFactory( |
const scoped_refptr<TCPClientSocketPool>& tcp_pool, |
+ const scoped_refptr<SSLClientSocketPool>& ssl_pool, |
HostResolver* host_resolver, |
- NetLog* net_log) |
- : tcp_pool_(tcp_pool), |
- host_resolver_(host_resolver), |
- net_log_(net_log) {} |
+ NetLog* net_log); |
- virtual ~HttpProxyConnectJobFactory() {} |
- |
// ClientSocketPoolBase::ConnectJobFactory methods. |
virtual ConnectJob* NewConnectJob(const std::string& group_name, |
const PoolBase::Request& request, |
ConnectJob::Delegate* delegate) const; |
- virtual base::TimeDelta ConnectionTimeout() const; |
+ virtual base::TimeDelta ConnectionTimeout() const { return timeout_; } |
private: |
const scoped_refptr<TCPClientSocketPool> tcp_pool_; |
+ const scoped_refptr<SSLClientSocketPool> ssl_pool_; |
const scoped_refptr<HostResolver> host_resolver_; |
NetLog* net_log_; |
+ base::TimeDelta timeout_; |
DISALLOW_COPY_AND_ASSIGN(HttpProxyConnectJobFactory); |
}; |