Index: net/http/http_proxy_client_socket_pool.cc |
diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc |
index 829a5e78314968bca7b6acce7b9f6fd3c7215482..9f3b4b663ace5f1eceb5931afb4431620e5709ba 100644 |
--- a/net/http/http_proxy_client_socket_pool.cc |
+++ b/net/http/http_proxy_client_socket_pool.cc |
@@ -6,6 +6,7 @@ |
#include <algorithm> |
+#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "base/time/time.h" |
#include "base/values.h" |
@@ -37,7 +38,9 @@ HttpProxySocketParams::HttpProxySocketParams( |
HttpAuthCache* http_auth_cache, |
HttpAuthHandlerFactory* http_auth_handler_factory, |
SpdySessionPool* spdy_session_pool, |
- bool tunnel) |
+ bool tunnel, |
+ const base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>& |
+ before_proxy_tunnel_connect_callback) |
: transport_params_(transport_params), |
ssl_params_(ssl_params), |
spdy_session_pool_(spdy_session_pool), |
@@ -46,7 +49,9 @@ HttpProxySocketParams::HttpProxySocketParams( |
endpoint_(endpoint), |
http_auth_cache_(tunnel ? http_auth_cache : NULL), |
http_auth_handler_factory_(tunnel ? http_auth_handler_factory : NULL), |
- tunnel_(tunnel) { |
+ tunnel_(tunnel), |
+ before_proxy_tunnel_request_callback_( |
+ before_proxy_tunnel_connect_callback) { |
DCHECK((transport_params.get() == NULL && ssl_params.get() != NULL) || |
(transport_params.get() != NULL && ssl_params.get() == NULL)); |
if (transport_params_.get()) { |
@@ -291,6 +296,7 @@ int HttpProxyConnectJob::DoHttpProxyConnect() { |
params_->tunnel(), |
using_spdy_, |
protocol_negotiated_, |
+ params_->before_proxy_tunnel_request_callback(), |
params_->ssl_params().get() != NULL)); |
return transport_socket_->Connect(callback_); |
} |
@@ -372,10 +378,14 @@ HttpProxyConnectJobFactory::HttpProxyConnectJobFactory( |
TransportClientSocketPool* transport_pool, |
SSLClientSocketPool* ssl_pool, |
HostResolver* host_resolver, |
+ base::Callback<void(const HostPortPair&, HttpRequestHeaders*)> |
+ before_proxy_tunnel_request_callback, |
NetLog* net_log) |
: transport_pool_(transport_pool), |
ssl_pool_(ssl_pool), |
host_resolver_(host_resolver), |
+ before_proxy_tunnel_request_callback_( |
+ before_proxy_tunnel_request_callback), |
net_log_(net_log) { |
base::TimeDelta max_pool_timeout = base::TimeDelta(); |
@@ -391,6 +401,10 @@ HttpProxyConnectJobFactory::HttpProxyConnectJobFactory( |
base::TimeDelta::FromSeconds(kHttpProxyConnectJobTimeoutInSeconds); |
} |
+HttpProxyClientSocketPool:: |
+HttpProxyConnectJobFactory::~HttpProxyConnectJobFactory() { |
+} |
+ |
scoped_ptr<ConnectJob> |
HttpProxyClientSocketPool::HttpProxyConnectJobFactory::NewConnectJob( |
@@ -421,6 +435,8 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool( |
HostResolver* host_resolver, |
TransportClientSocketPool* transport_pool, |
SSLClientSocketPool* ssl_pool, |
+ const base::Callback<void(const HostPortPair&, HttpRequestHeaders*)>& |
+ before_proxy_tunnel_request_callback, |
NetLog* net_log) |
: transport_pool_(transport_pool), |
ssl_pool_(ssl_pool), |
@@ -430,6 +446,7 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool( |
new HttpProxyConnectJobFactory(transport_pool, |
ssl_pool, |
host_resolver, |
+ before_proxy_tunnel_request_callback, |
net_log)) { |
// We should always have a |transport_pool_| except in unit tests. |
if (transport_pool_) |