| Index: net/socket/transport_client_socket_pool.cc
|
| diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc
|
| index dbc701a938681a2d074f217b1025ce247d57ee4a..241a71219d3d21839fc98e78a75621a5fd201dc6 100644
|
| --- a/net/socket/transport_client_socket_pool.cc
|
| +++ b/net/socket/transport_client_socket_pool.cc
|
| @@ -20,6 +20,8 @@
|
| #include "base/values.h"
|
| #include "net/base/ip_endpoint.h"
|
| #include "net/base/net_errors.h"
|
| +#include "net/base/socket_performance_watcher.h"
|
| +#include "net/base/socket_performance_watcher_factory.h"
|
| #include "net/log/net_log.h"
|
| #include "net/socket/client_socket_factory.h"
|
| #include "net/socket/client_socket_handle.h"
|
| @@ -200,6 +202,7 @@ TransportConnectJob::TransportConnectJob(
|
| const scoped_refptr<TransportSocketParams>& params,
|
| base::TimeDelta timeout_duration,
|
| ClientSocketFactory* client_socket_factory,
|
| + SocketPerformanceWatcherFactory* socket_performance_watcher_factory,
|
| HostResolver* host_resolver,
|
| Delegate* delegate,
|
| NetLog* net_log)
|
| @@ -210,6 +213,7 @@ TransportConnectJob::TransportConnectJob(
|
| delegate,
|
| BoundNetLog::Make(net_log, NetLog::SOURCE_CONNECT_JOB)),
|
| helper_(params, client_socket_factory, host_resolver, &connect_timing_),
|
| + socket_performance_watcher_factory_(socket_performance_watcher_factory),
|
| interval_between_connects_(CONNECT_INTERVAL_GT_20MS),
|
| resolve_result_(OK) {
|
| helper_.SetOnIOComplete(this);
|
| @@ -296,9 +300,17 @@ int TransportConnectJob::DoTransportConnect() {
|
|
|
| helper_.set_next_state(
|
| TransportConnectJobHelper::STATE_TRANSPORT_CONNECT_COMPLETE);
|
| + // Create a |SocketPerformanceWatcher|, and pass the ownership.
|
| + scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher;
|
| + if (socket_performance_watcher_factory_) {
|
| + socket_performance_watcher =
|
| + socket_performance_watcher_factory_->CreateSocketPerformanceWatcher(
|
| + SocketPerformanceWatcherFactory::PROTOCOL_TCP);
|
| + }
|
| transport_socket_ =
|
| helper_.client_socket_factory()->CreateTransportClientSocket(
|
| - helper_.addresses(), net_log().net_log(), net_log().source());
|
| + helper_.addresses(), std::move(socket_performance_watcher),
|
| + net_log().net_log(), net_log().source());
|
|
|
| // If the list contains IPv6 and IPv4 addresses, the first address will
|
| // be IPv6, and the IPv4 addresses will be tried as fallback addresses,
|
| @@ -413,11 +425,20 @@ void TransportConnectJob::DoIPv6FallbackTransportConnect() {
|
| DCHECK(!fallback_transport_socket_.get());
|
| DCHECK(!fallback_addresses_.get());
|
|
|
| + // Create a |SocketPerformanceWatcher|, and pass the ownership.
|
| + scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher;
|
| + if (socket_performance_watcher_factory_) {
|
| + socket_performance_watcher =
|
| + socket_performance_watcher_factory_->CreateSocketPerformanceWatcher(
|
| + SocketPerformanceWatcherFactory::PROTOCOL_TCP);
|
| + }
|
| +
|
| fallback_addresses_.reset(new AddressList(helper_.addresses()));
|
| MakeAddressListStartWithIPv4(fallback_addresses_.get());
|
| fallback_transport_socket_ =
|
| helper_.client_socket_factory()->CreateTransportClientSocket(
|
| - *fallback_addresses_, net_log().net_log(), net_log().source());
|
| + *fallback_addresses_, std::move(socket_performance_watcher),
|
| + net_log().net_log(), net_log().source());
|
| fallback_connect_start_time_ = base::TimeTicks::Now();
|
| int rv = fallback_transport_socket_->Connect(
|
| base::Bind(
|
| @@ -492,7 +513,7 @@ TransportClientSocketPool::TransportConnectJobFactory::NewConnectJob(
|
| return scoped_ptr<ConnectJob>(new TransportConnectJob(
|
| group_name, request.priority(), request.respect_limits(),
|
| request.params(), ConnectionTimeout(), client_socket_factory_,
|
| - host_resolver_, delegate, net_log_));
|
| + socket_performance_watcher_factory_, host_resolver_, delegate, net_log_));
|
| }
|
|
|
| base::TimeDelta
|
| @@ -506,6 +527,7 @@ TransportClientSocketPool::TransportClientSocketPool(
|
| int max_sockets_per_group,
|
| HostResolver* host_resolver,
|
| ClientSocketFactory* client_socket_factory,
|
| + SocketPerformanceWatcherFactory* socket_performance_watcher_factory,
|
| NetLog* net_log)
|
| : base_(NULL,
|
| max_sockets,
|
| @@ -514,6 +536,7 @@ TransportClientSocketPool::TransportClientSocketPool(
|
| ClientSocketPool::used_idle_socket_timeout(),
|
| new TransportConnectJobFactory(client_socket_factory,
|
| host_resolver,
|
| + socket_performance_watcher_factory,
|
| net_log)) {
|
| base_.EnableConnectBackupJobs();
|
| }
|
|
|