| Index: net/socket/tcp_client_socket_win.cc
 | 
| ===================================================================
 | 
| --- net/socket/tcp_client_socket_win.cc	(revision 90217)
 | 
| +++ net/socket/tcp_client_socket_win.cc	(working copy)
 | 
| @@ -323,7 +323,8 @@
 | 
|        next_connect_state_(CONNECT_STATE_NONE),
 | 
|        connect_os_error_(0),
 | 
|        net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)),
 | 
| -      previously_disconnected_(false) {
 | 
| +      previously_disconnected_(false),
 | 
| +      num_bytes_read_(0) {
 | 
|    scoped_refptr<NetLog::EventParameters> params;
 | 
|    if (source.is_valid())
 | 
|      params = new NetLogSourceParameter("source_dependency", source);
 | 
| @@ -484,6 +485,7 @@
 | 
|  
 | 
|    core_->write_overlapped_.hEvent = WSACreateEvent();
 | 
|  
 | 
| +  connect_start_time_ = base::TimeTicks::Now();
 | 
|    if (!connect(socket_, ai->ai_addr, static_cast<int>(ai->ai_addrlen))) {
 | 
|      // Connected without waiting!
 | 
|      //
 | 
| @@ -522,6 +524,7 @@
 | 
|    net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT_ATTEMPT, params);
 | 
|  
 | 
|    if (result == OK) {
 | 
| +    connect_time_micros_ = base::TimeTicks::Now() - connect_start_time_;
 | 
|      use_history_.set_was_ever_connected();
 | 
|      return OK;  // Done!
 | 
|    }
 | 
| @@ -658,6 +661,14 @@
 | 
|    return false;
 | 
|  }
 | 
|  
 | 
| +int64 TCPClientSocketWin::NumBytesRead() const {
 | 
| +  return num_bytes_read_;
 | 
| +}
 | 
| +
 | 
| +base::TimeDelta TCPClientSocketWin::GetConnectTimeMicros() const {
 | 
| +  return connect_time_micros_;
 | 
| +}
 | 
| +
 | 
|  int TCPClientSocketWin::Read(IOBuffer* buf,
 | 
|                               int buf_len,
 | 
|                               CompletionCallback* callback) {
 | 
| @@ -688,6 +699,7 @@
 | 
|        base::MemoryDebug::MarkAsInitialized(core_->read_buffer_.buf, num);
 | 
|        base::StatsCounter read_bytes("tcp.read_bytes");
 | 
|        read_bytes.Add(num);
 | 
| +      num_bytes_read_ += num;
 | 
|        if (num > 0)
 | 
|          use_history_.set_was_used_to_convey_data();
 | 
|        net_log_.AddByteTransferEvent(NetLog::TYPE_SOCKET_BYTES_RECEIVED, num,
 | 
| @@ -858,6 +870,7 @@
 | 
|    if (ok) {
 | 
|      base::StatsCounter read_bytes("tcp.read_bytes");
 | 
|      read_bytes.Add(num_bytes);
 | 
| +    num_bytes_read_ += num_bytes;
 | 
|      if (num_bytes > 0)
 | 
|        use_history_.set_was_used_to_convey_data();
 | 
|      net_log_.AddByteTransferEvent(NetLog::TYPE_SOCKET_BYTES_RECEIVED,
 | 
| 
 |