Chromium Code Reviews| Index: net/socket/socket_test_util.cc |
| diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc |
| index f993801adeb2814aede788bcf82c693bfa99696f..bb966aa6d6b372d63f7219fc8632cc3276ea894b 100644 |
| --- a/net/socket/socket_test_util.cc |
| +++ b/net/socket/socket_test_util.cc |
| @@ -653,6 +653,8 @@ MockClientSocketFactory::MockClientSocketFactory() {} |
| MockClientSocketFactory::~MockClientSocketFactory() {} |
| +bool MockClientSocketFactory::leader_connected_ = false; |
| + |
| void MockClientSocketFactory::AddSocketDataProvider( |
| SocketDataProvider* data) { |
| mock_data_.Add(data); |
| @@ -668,6 +670,14 @@ void MockClientSocketFactory::ResetNextMockIndexes() { |
| mock_ssl_data_.ResetNextIndex(); |
| } |
| +void MockClientSocketFactory::LeaderConnected() { |
| + leader_connected_ = true; |
| +} |
| + |
| +bool MockClientSocketFactory::IsLeaderConnected() { |
| + return leader_connected_; |
| +} |
| + |
| scoped_ptr<DatagramClientSocket> |
| MockClientSocketFactory::CreateDatagramClientSocket( |
| DatagramSocket::BindType bind_type, |
| @@ -699,15 +709,23 @@ scoped_ptr<SSLClientSocket> MockClientSocketFactory::CreateSSLClientSocket( |
| const HostPortPair& host_and_port, |
| const SSLConfig& ssl_config, |
| const SSLClientSocketContext& context) { |
| - return scoped_ptr<SSLClientSocket>( |
| + scoped_ptr<MockSSLClientSocket> socket( |
| new MockSSLClientSocket(transport_socket.Pass(), |
| - host_and_port, ssl_config, |
| + host_and_port, |
| + ssl_config, |
| mock_ssl_data_.GetNext())); |
| + ssl_client_sockets_.push_back(socket.get()); |
| + return socket.PassAs<SSLClientSocket>(); |
| } |
| void MockClientSocketFactory::ClearSSLSessionCache() { |
| } |
| +std::vector<MockSSLClientSocket*> |
| +MockClientSocketFactory::GetSSLClientSockets() { |
| + return ssl_client_sockets_; |
| +} |
| + |
| const char MockClientSocket::kTlsUnique[] = "MOCK_TLSUNIQ"; |
| MockClientSocket::MockClientSocket(const BoundNetLog& net_log) |
| @@ -762,6 +780,20 @@ void MockClientSocket::GetSSLCertRequestInfo( |
| SSLCertRequestInfo* cert_request_info) { |
| } |
| +bool MockClientSocket::InSessionCache() const { |
| + return false; |
| +} |
| + |
| +void MockClientSocket::WatchSessionForCompletion( |
| + const base::Closure& cb) const { |
| +} |
| + |
| +void MockClientSocket::SetSocketFailureCallback(const base::Closure& cb) { |
| +} |
| + |
| +void MockClientSocket::OnSocketFailure() { |
| +} |
| + |
| int MockClientSocket::ExportKeyingMaterial(const base::StringPiece& label, |
| bool has_context, |
| const base::StringPiece& context, |
| @@ -1314,9 +1346,12 @@ MockSSLClientSocket::MockSSLClientSocket( |
| const SSLConfig& ssl_config, |
| SSLSocketDataProvider* data) |
| : MockClientSocket( |
| - // Have to use the right BoundNetLog for LoadTimingInfo regression |
| - // tests. |
| - transport_socket->socket()->NetLog()), |
| + // Have to use the right BoundNetLog for LoadTimingInfo regression |
| + // tests. |
| + transport_socket->socket()->NetLog()), |
| + process_pending_jobs_callback_( |
| + base::Bind(&SSLConnectJobMessenger::OnJobSucceeded, |
| + base::Unretained(new SSLConnectJobMessenger))), |
| transport_(transport_socket.Pass()), |
| data_(data), |
| is_npn_state_set_(false), |
| @@ -1342,9 +1377,24 @@ int MockSSLClientSocket::Write(IOBuffer* buf, int buf_len, |
| } |
| int MockSSLClientSocket::Connect(const CompletionCallback& callback) { |
| + if (SSLConnectJob::GetEnableJobWaiting()) { |
| + // The socket should only be starting to connect if the leader has already |
| + // connected -- unless the socket is the leader. |
| + if (!MockClientSocketFactory::IsLeaderConnected()) |
| + good_ordering_ = false; |
| + else |
| + good_ordering_ = true; |
| + } |
| int rv = transport_->socket()->Connect( |
| base::Bind(&ConnectCallback, base::Unretained(this), callback)); |
| if (rv == OK) { |
| + if (SSLConnectJob::GetEnableJobWaiting()) { |
| + if (data_->is_leader_) { |
| + good_ordering_ = true; |
| + MockClientSocketFactory::LeaderConnected(); |
| + } |
| + process_pending_jobs_callback_.Run(); |
| + } |
| if (data_->connect.result == OK) |
| connected_ = true; |
| if (data_->connect.mode == ASYNC) { |
| @@ -1399,6 +1449,23 @@ void MockSSLClientSocket::GetSSLCertRequestInfo( |
| } |
| } |
| +bool MockSSLClientSocket::InSessionCache() const { |
| + if (data_->is_in_session_cache_) |
| + return true; |
| + return false; |
|
wtc
2014/07/08 01:25:41
This is simply
return data_->is_in_session_cache
mshelley
2014/07/09 19:50:59
Done.
|
| +} |
| + |
| +void MockSSLClientSocket::WatchSessionForCompletion( |
| + const base::Closure& cb) const { |
| + process_pending_jobs_callback_ = cb; |
| +} |
| + |
| +void MockSSLClientSocket::SetSocketFailureCallback(const base::Closure& cb) { |
| +} |
| + |
| +void MockSSLClientSocket::OnSocketFailure() { |
| +} |
| + |
| SSLClientSocket::NextProtoStatus MockSSLClientSocket::GetNextProto( |
| std::string* proto, std::string* server_protos) { |
| *proto = data_->next_proto; |
| @@ -1441,6 +1508,10 @@ ServerBoundCertService* MockSSLClientSocket::GetServerBoundCertService() const { |
| return data_->server_bound_cert_service; |
| } |
| +bool MockSSLClientSocket::IsGoodOrdering() const { |
| + return good_ordering_; |
| +} |
| + |
| void MockSSLClientSocket::OnReadComplete(const MockRead& data) { |
| NOTIMPLEMENTED(); |
| } |