| Index: net/socket/tcp_client_socket.cc
|
| diff --git a/net/socket/tcp_client_socket.cc b/net/socket/tcp_client_socket.cc
|
| index 56238ba0d12cb5412df6fc317770ea9aa561fe24..bf923405f2d62f9d855bc80cc286089c51bdb985 100644
|
| --- a/net/socket/tcp_client_socket.cc
|
| +++ b/net/socket/tcp_client_socket.cc
|
| @@ -14,27 +14,36 @@
|
| #include "net/base/io_buffer.h"
|
| #include "net/base/ip_endpoint.h"
|
| #include "net/base/net_errors.h"
|
| +#include "net/base/socket_performance_watcher.h"
|
|
|
| namespace net {
|
|
|
| -TCPClientSocket::TCPClientSocket(const AddressList& addresses,
|
| - net::NetLog* net_log,
|
| - const net::NetLog::Source& source)
|
| - : socket_(new TCPSocket(net_log, source)),
|
| +TCPClientSocket::TCPClientSocket(
|
| + const AddressList& addresses,
|
| + scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher,
|
| + net::NetLog* net_log,
|
| + const net::NetLog::Source& source)
|
| + : socket_performance_watcher_(socket_performance_watcher.get()),
|
| + socket_(new TCPSocket(std::move(socket_performance_watcher),
|
| + net_log,
|
| + source)),
|
| addresses_(addresses),
|
| current_address_index_(-1),
|
| next_connect_state_(CONNECT_STATE_NONE),
|
| previously_disconnected_(false),
|
| - total_received_bytes_(0) {}
|
| + total_received_bytes_(0),
|
| + notify_reset_socket_performance_watcher_(false) {}
|
|
|
| TCPClientSocket::TCPClientSocket(scoped_ptr<TCPSocket> connected_socket,
|
| const IPEndPoint& peer_address)
|
| - : socket_(std::move(connected_socket)),
|
| + : socket_performance_watcher_(nullptr),
|
| + socket_(std::move(connected_socket)),
|
| addresses_(AddressList(peer_address)),
|
| current_address_index_(0),
|
| next_connect_state_(CONNECT_STATE_NONE),
|
| previously_disconnected_(false),
|
| - total_received_bytes_(0) {
|
| + total_received_bytes_(0),
|
| + notify_reset_socket_performance_watcher_(false) {
|
| DCHECK(socket_);
|
|
|
| socket_->SetDefaultOptionsForClient();
|
| @@ -152,6 +161,10 @@ int TCPClientSocket::DoConnect() {
|
| }
|
| }
|
|
|
| + if (socket_performance_watcher_ && notify_reset_socket_performance_watcher_) {
|
| + socket_performance_watcher_->Reset();
|
| + }
|
| +
|
| // |socket_| is owned by this class and the callback won't be run once
|
| // |socket_| is gone. Therefore, it is safe to use base::Unretained() here.
|
| return socket_->Connect(endpoint,
|
| @@ -195,6 +208,7 @@ void TCPClientSocket::DoDisconnect() {
|
| // disconnected.
|
| previously_disconnected_ = socket_->IsValid() && current_address_index_ >= 0;
|
| socket_->Close();
|
| + notify_reset_socket_performance_watcher_ = true;
|
| }
|
|
|
| bool TCPClientSocket::IsConnected() const {
|
|
|