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 7375920d8a2daa0b4e83ed0a2447d5243913c7a5..37a23bd63d6bf4b040e3f51518fc19415b8710e4 100644 |
--- a/net/http/http_proxy_client_socket_pool.cc |
+++ b/net/http/http_proxy_client_socket_pool.cc |
@@ -32,6 +32,20 @@ |
namespace net { |
+namespace { |
+ |
+// HttpProxyConnectJobs will time out after this many seconds. Note this is on |
+// top of the timeout for the transport socket. |
+// TODO(kundaji): Proxy connect timeout should be independent of platform and be |
+// based on proxy. Bug http://crbug.com/407446. |
+#if defined(OS_ANDROID) || defined(OS_IOS) |
+static const int kHttpProxyConnectJobTimeoutInSeconds = 10; |
+#else |
+static const int kHttpProxyConnectJobTimeoutInSeconds = 30; |
+#endif |
+ |
+} // namespace |
+ |
HttpProxySocketParams::HttpProxySocketParams( |
const scoped_refptr<TransportSocketParams>& transport_params, |
const scoped_refptr<SSLSocketParams>& ssl_params, |
@@ -65,16 +79,6 @@ const HostResolver::RequestInfo& HttpProxySocketParams::destination() const { |
HttpProxySocketParams::~HttpProxySocketParams() {} |
-// HttpProxyConnectJobs will time out after this many seconds. Note this is on |
-// top of the timeout for the transport socket. |
-// TODO(kundaji): Proxy connect timeout should be independent of platform and be |
-// based on proxy. Bug http://crbug.com/407446. |
-#if defined(OS_ANDROID) || defined(OS_IOS) |
-static const int kHttpProxyConnectJobTimeoutInSeconds = 10; |
-#else |
-static const int kHttpProxyConnectJobTimeoutInSeconds = 30; |
-#endif |
- |
HttpProxyConnectJob::HttpProxyConnectJob( |
const std::string& group_name, |
RequestPriority priority, |
@@ -149,29 +153,15 @@ int HttpProxyConnectJob::HandleConnectResult(int result) { |
return result; |
} |
-HttpProxyClientSocketPool:: |
-HttpProxyConnectJobFactory::HttpProxyConnectJobFactory( |
- TransportClientSocketPool* transport_pool, |
- SSLClientSocketPool* ssl_pool, |
- NetLog* net_log) |
+HttpProxyClientSocketPool::HttpProxyConnectJobFactory:: |
+ HttpProxyConnectJobFactory(TransportClientSocketPool* transport_pool, |
+ SSLClientSocketPool* ssl_pool, |
+ NetworkQualityProvider* network_quality_provider, |
+ NetLog* net_log) |
: transport_pool_(transport_pool), |
ssl_pool_(ssl_pool), |
- net_log_(net_log) { |
- base::TimeDelta max_pool_timeout = base::TimeDelta(); |
- |
-// TODO(kundaji): Proxy connect timeout should be independent of platform and be |
-// based on proxy. Bug http://crbug.com/407446. |
-#if (defined(OS_ANDROID) || defined(OS_IOS)) |
-#else |
- if (transport_pool_) |
- max_pool_timeout = transport_pool_->ConnectionTimeout(); |
- if (ssl_pool_) |
- max_pool_timeout = std::max(max_pool_timeout, |
- ssl_pool_->ConnectionTimeout()); |
-#endif |
- timeout_ = max_pool_timeout + |
- base::TimeDelta::FromSeconds(kHttpProxyConnectJobTimeoutInSeconds); |
-} |
+ network_quality_provider_(network_quality_provider), |
+ net_log_(net_log) {} |
std::unique_ptr<ConnectJob> |
HttpProxyClientSocketPool::HttpProxyConnectJobFactory::NewConnectJob( |
@@ -187,7 +177,23 @@ HttpProxyClientSocketPool::HttpProxyConnectJobFactory::NewConnectJob( |
base::TimeDelta |
HttpProxyClientSocketPool::HttpProxyConnectJobFactory::ConnectionTimeout( |
) const { |
- return timeout_; |
+ // TODO(tbansal): https://crbug.com/704339. Use |network_quality_provider_| |
+ // and field trial to determine the connection timeout. |
+ ALLOW_UNUSED_LOCAL(network_quality_provider_); |
+ |
+ // Return the default proxy connection timeout. |
+ base::TimeDelta max_pool_timeout = base::TimeDelta(); |
+#if (!defined(OS_ANDROID) && !defined(OS_IOS)) |
+ if (transport_pool_) |
+ max_pool_timeout = transport_pool_->ConnectionTimeout(); |
+ if (ssl_pool_) { |
+ max_pool_timeout = |
+ std::max(max_pool_timeout, ssl_pool_->ConnectionTimeout()); |
+ } |
+#endif // !defined(OS_ANDROID) && !defined(OS_IOS) |
+ |
+ return max_pool_timeout + |
+ base::TimeDelta::FromSeconds(kHttpProxyConnectJobTimeoutInSeconds); |
} |
HttpProxyClientSocketPool::HttpProxyClientSocketPool( |
@@ -195,6 +201,7 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool( |
int max_sockets_per_group, |
TransportClientSocketPool* transport_pool, |
SSLClientSocketPool* ssl_pool, |
+ NetworkQualityProvider* network_quality_provider, |
NetLog* net_log) |
: transport_pool_(transport_pool), |
ssl_pool_(ssl_pool), |
@@ -203,7 +210,10 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool( |
max_sockets_per_group, |
ClientSocketPool::unused_idle_socket_timeout(), |
ClientSocketPool::used_idle_socket_timeout(), |
- new HttpProxyConnectJobFactory(transport_pool, ssl_pool, net_log)) { |
+ new HttpProxyConnectJobFactory(transport_pool, |
+ ssl_pool, |
+ network_quality_provider, |
+ net_log)) { |
// We should always have a |transport_pool_| except in unit tests. |
if (transport_pool_) |
base_.AddLowerLayeredPool(transport_pool_); |