| Index: net/socket/ssl_client_socket_openssl.cc | 
| diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc | 
| index ee07f19ed5d9951486d6f774af12151026a2f963..45e36f9acf5da612218ae1e86a329463c34cd381 100644 | 
| --- a/net/socket/ssl_client_socket_openssl.cc | 
| +++ b/net/socket/ssl_client_socket_openssl.cc | 
| @@ -355,6 +355,7 @@ SSLClientSocketOpenSSL::SSLClientSocketOpenSSL( | 
| pending_read_error_(kNoPendingReadResult), | 
| transport_write_error_(OK), | 
| completed_handshake_(false), | 
| +      was_used_to_convey_data_(false), | 
| client_auth_cert_needed_(false), | 
| cert_verifier_(context.cert_verifier), | 
| server_bound_cert_service_(context.server_bound_cert_service), | 
| @@ -544,11 +545,7 @@ void SSLClientSocketOpenSSL::SetOmniboxSpeculation() { | 
| } | 
|  | 
| bool SSLClientSocketOpenSSL::WasEverUsed() const { | 
| -  if (transport_.get() && transport_->socket()) | 
| -    return transport_->socket()->WasEverUsed(); | 
| - | 
| -  NOTREACHED(); | 
| -  return false; | 
| +  return was_used_to_convey_data_; | 
| } | 
|  | 
| bool SSLClientSocketOpenSSL::UsingTCPFastOpen() const { | 
| @@ -619,6 +616,8 @@ int SSLClientSocketOpenSSL::Read(IOBuffer* buf, | 
| if (rv == ERR_IO_PENDING) { | 
| user_read_callback_ = callback; | 
| } else { | 
| +    if (rv > 0) | 
| +      was_used_to_convey_data_ = true; | 
| user_read_buf_ = NULL; | 
| user_read_buf_len_ = 0; | 
| } | 
| @@ -637,6 +636,8 @@ int SSLClientSocketOpenSSL::Write(IOBuffer* buf, | 
| if (rv == ERR_IO_PENDING) { | 
| user_write_callback_ = callback; | 
| } else { | 
| +    if (rv > 0) | 
| +      was_used_to_convey_data_ = true; | 
| user_write_buf_ = NULL; | 
| user_write_buf_len_ = 0; | 
| } | 
| @@ -776,6 +777,8 @@ bool SSLClientSocketOpenSSL::Init() { | 
| void SSLClientSocketOpenSSL::DoReadCallback(int rv) { | 
| // Since Run may result in Read being called, clear |user_read_callback_| | 
| // up front. | 
| +  if (rv > 0) | 
| +    was_used_to_convey_data_ = true; | 
| user_read_buf_ = NULL; | 
| user_read_buf_len_ = 0; | 
| base::ResetAndReturn(&user_read_callback_).Run(rv); | 
| @@ -784,6 +787,8 @@ void SSLClientSocketOpenSSL::DoReadCallback(int rv) { | 
| void SSLClientSocketOpenSSL::DoWriteCallback(int rv) { | 
| // Since Run may result in Write being called, clear |user_write_callback_| | 
| // up front. | 
| +  if (rv > 0) | 
| +    was_used_to_convey_data_ = true; | 
| user_write_buf_ = NULL; | 
| user_write_buf_len_ = 0; | 
| base::ResetAndReturn(&user_write_callback_).Run(rv); | 
|  |