| Index: net/socket/socket_test_util.cc
|
| diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc
|
| index 791c9f684804dd7fd74ac8adee3b2a5e7d8cc164..fb22055fffe479f916a9fead6880a1521bdff69f 100644
|
| --- a/net/socket/socket_test_util.cc
|
| +++ b/net/socket/socket_test_util.cc
|
| @@ -10,7 +10,6 @@
|
| #include "base/basictypes.h"
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| -#include "base/callback_helpers.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| @@ -279,9 +278,7 @@ SSLSocketDataProvider::SSLSocketDataProvider(IoMode mode, int result)
|
| client_cert_sent(false),
|
| cert_request_info(NULL),
|
| channel_id_sent(false),
|
| - connection_status(0),
|
| - should_pause_on_connect(false),
|
| - is_in_session_cache(false) {
|
| + connection_status(0) {
|
| SSLConnectionStatusSetVersion(SSL_CONNECTION_VERSION_TLS1_2,
|
| &connection_status);
|
| // Set to TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
| @@ -712,10 +709,8 @@ scoped_ptr<SSLClientSocket> MockClientSocketFactory::CreateSSLClientSocket(
|
| next_ssl_data->next_protos_expected_in_ssl_config.end(),
|
| ssl_config.next_protos.begin()));
|
| }
|
| - scoped_ptr<MockSSLClientSocket> socket(new MockSSLClientSocket(
|
| + return scoped_ptr<SSLClientSocket>(new MockSSLClientSocket(
|
| transport_socket.Pass(), host_and_port, ssl_config, next_ssl_data));
|
| - ssl_client_sockets_.push_back(socket.get());
|
| - return socket.Pass();
|
| }
|
|
|
| void MockClientSocketFactory::ClearSSLSessionCache() {
|
| @@ -771,20 +766,6 @@ const BoundNetLog& MockClientSocket::NetLog() const {
|
| return net_log_;
|
| }
|
|
|
| -std::string MockClientSocket::GetSessionCacheKey() const {
|
| - NOTIMPLEMENTED();
|
| - return std::string();
|
| -}
|
| -
|
| -bool MockClientSocket::InSessionCache() const {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -void MockClientSocket::SetHandshakeCompletionCallback(const base::Closure& cb) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| void MockClientSocket::GetSSLCertRequestInfo(
|
| SSLCertRequestInfo* cert_request_info) {
|
| }
|
| @@ -1324,6 +1305,16 @@ void DeterministicMockTCPClientSocket::OnReadComplete(const MockRead& data) {}
|
| void DeterministicMockTCPClientSocket::OnConnectComplete(
|
| const MockConnect& data) {}
|
|
|
| +// static
|
| +void MockSSLClientSocket::ConnectCallback(
|
| + MockSSLClientSocket* ssl_client_socket,
|
| + const CompletionCallback& callback,
|
| + int rv) {
|
| + if (rv == OK)
|
| + ssl_client_socket->connected_ = true;
|
| + callback.Run(rv);
|
| +}
|
| +
|
| MockSSLClientSocket::MockSSLClientSocket(
|
| scoped_ptr<ClientSocketHandle> transport_socket,
|
| const HostPortPair& host_port_pair,
|
| @@ -1334,15 +1325,11 @@ MockSSLClientSocket::MockSSLClientSocket(
|
| // tests.
|
| transport_socket->socket()->NetLog()),
|
| transport_(transport_socket.Pass()),
|
| - host_port_pair_(host_port_pair),
|
| data_(data),
|
| is_npn_state_set_(false),
|
| new_npn_value_(false),
|
| is_protocol_negotiated_set_(false),
|
| - protocol_negotiated_(kProtoUnknown),
|
| - next_connect_state_(STATE_NONE),
|
| - reached_connect_(false),
|
| - weak_factory_(this) {
|
| + protocol_negotiated_(kProtoUnknown) {
|
| DCHECK(data_);
|
| peer_addr_ = data->connect.peer_addr;
|
| }
|
| @@ -1362,23 +1349,28 @@ int MockSSLClientSocket::Write(IOBuffer* buf, int buf_len,
|
| }
|
|
|
| int MockSSLClientSocket::Connect(const CompletionCallback& callback) {
|
| - next_connect_state_ = STATE_SSL_CONNECT;
|
| - reached_connect_ = true;
|
| - int rv = DoConnectLoop(OK);
|
| - if (rv == ERR_IO_PENDING)
|
| - connect_callback_ = callback;
|
| + int rv = transport_->socket()->Connect(
|
| + base::Bind(&ConnectCallback, base::Unretained(this), callback));
|
| + if (rv == OK) {
|
| + if (data_->connect.result == OK)
|
| + connected_ = true;
|
| + if (data_->connect.mode == ASYNC) {
|
| + RunCallbackAsync(callback, data_->connect.result);
|
| + return ERR_IO_PENDING;
|
| + }
|
| + return data_->connect.result;
|
| + }
|
| return rv;
|
| }
|
|
|
| void MockSSLClientSocket::Disconnect() {
|
| - weak_factory_.InvalidateWeakPtrs();
|
| MockClientSocket::Disconnect();
|
| if (transport_->socket() != NULL)
|
| transport_->socket()->Disconnect();
|
| }
|
|
|
| bool MockSSLClientSocket::IsConnected() const {
|
| - return transport_->socket()->IsConnected() && connected_;
|
| + return transport_->socket()->IsConnected();
|
| }
|
|
|
| bool MockSSLClientSocket::WasEverUsed() const {
|
| @@ -1402,21 +1394,6 @@ bool MockSSLClientSocket::GetSSLInfo(SSLInfo* ssl_info) {
|
| return true;
|
| }
|
|
|
| -std::string MockSSLClientSocket::GetSessionCacheKey() const {
|
| - // For the purposes of these tests, |host_and_port| will serve as the
|
| - // cache key.
|
| - return host_port_pair_.ToString();
|
| -}
|
| -
|
| -bool MockSSLClientSocket::InSessionCache() const {
|
| - return data_->is_in_session_cache;
|
| -}
|
| -
|
| -void MockSSLClientSocket::SetHandshakeCompletionCallback(
|
| - const base::Closure& cb) {
|
| - handshake_completion_callback_ = cb;
|
| -}
|
| -
|
| void MockSSLClientSocket::GetSSLCertRequestInfo(
|
| SSLCertRequestInfo* cert_request_info) {
|
| DCHECK(cert_request_info);
|
| @@ -1478,69 +1455,6 @@ void MockSSLClientSocket::OnConnectComplete(const MockConnect& data) {
|
| NOTIMPLEMENTED();
|
| }
|
|
|
| -void MockSSLClientSocket::RestartPausedConnect() {
|
| - DCHECK(data_->should_pause_on_connect);
|
| - DCHECK_EQ(next_connect_state_, STATE_SSL_CONNECT_COMPLETE);
|
| - OnIOComplete(data_->connect.result);
|
| -}
|
| -
|
| -void MockSSLClientSocket::OnIOComplete(int result) {
|
| - int rv = DoConnectLoop(result);
|
| - if (rv != ERR_IO_PENDING)
|
| - base::ResetAndReturn(&connect_callback_).Run(rv);
|
| -}
|
| -
|
| -int MockSSLClientSocket::DoConnectLoop(int result) {
|
| - DCHECK_NE(next_connect_state_, STATE_NONE);
|
| -
|
| - int rv = result;
|
| - do {
|
| - ConnectState state = next_connect_state_;
|
| - next_connect_state_ = STATE_NONE;
|
| - switch (state) {
|
| - case STATE_SSL_CONNECT:
|
| - rv = DoSSLConnect();
|
| - break;
|
| - case STATE_SSL_CONNECT_COMPLETE:
|
| - rv = DoSSLConnectComplete(rv);
|
| - break;
|
| - default:
|
| - NOTREACHED() << "bad state";
|
| - rv = ERR_UNEXPECTED;
|
| - break;
|
| - }
|
| - } while (rv != ERR_IO_PENDING && next_connect_state_ != STATE_NONE);
|
| -
|
| - return rv;
|
| -}
|
| -
|
| -int MockSSLClientSocket::DoSSLConnect() {
|
| - next_connect_state_ = STATE_SSL_CONNECT_COMPLETE;
|
| -
|
| - if (data_->should_pause_on_connect)
|
| - return ERR_IO_PENDING;
|
| -
|
| - if (data_->connect.mode == ASYNC) {
|
| - base::MessageLoop::current()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MockSSLClientSocket::OnIOComplete,
|
| - weak_factory_.GetWeakPtr(),
|
| - data_->connect.result));
|
| - return ERR_IO_PENDING;
|
| - }
|
| -
|
| - return data_->connect.result;
|
| -}
|
| -
|
| -int MockSSLClientSocket::DoSSLConnectComplete(int result) {
|
| - if (result == OK)
|
| - connected_ = true;
|
| -
|
| - if (!handshake_completion_callback_.is_null())
|
| - base::ResetAndReturn(&handshake_completion_callback_).Run();
|
| - return result;
|
| -}
|
| -
|
| MockUDPClientSocket::MockUDPClientSocket(SocketDataProvider* data,
|
| net::NetLog* net_log)
|
| : connected_(false),
|
|
|