Index: net/socket/socket_test_util.cc |
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc |
index 9e74d88291f7f3bc6c84bf8a69d910d35fd12b1e..360f34fc12d5b95f1c2716814e03aab6b9e97631 100644 |
--- a/net/socket/socket_test_util.cc |
+++ b/net/socket/socket_test_util.cc |
@@ -256,10 +256,6 @@ MockSSLClientSocket::~MockSSLClientSocket() { |
Disconnect(); |
} |
-void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) { |
- ssl_info->Reset(); |
-} |
- |
int MockSSLClientSocket::Connect(net::CompletionCallback* callback) { |
ConnectCallback* connect_callback = new ConnectCallback( |
this, callback, data_->connect.result); |
@@ -293,6 +289,16 @@ int MockSSLClientSocket::Write(net::IOBuffer* buf, int buf_len, |
return transport_->Write(buf, buf_len, callback); |
} |
+void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) { |
+ ssl_info->Reset(); |
+} |
+ |
+SSLClientSocket::NextProtoStatus MockSSLClientSocket::GetNextProto( |
+ std::string* proto) { |
+ *proto = data_->next_proto; |
+ return data_->next_proto_status; |
+} |
+ |
MockRead StaticSocketDataProvider::GetNextRead() { |
DCHECK(!at_read_eof()); |
reads_[read_index_].time_stamp = base::Time::Now(); |
@@ -386,6 +392,51 @@ void DynamicSocketDataProvider::SimulateRead(const char* data) { |
reads_.push_back(MockRead(data)); |
} |
+DelayedSocketData::DelayedSocketData( |
+ int write_delay, MockRead* reads, size_t reads_count, |
+ MockWrite* writes, size_t writes_count) |
+ : StaticSocketDataProvider(reads, reads_count, writes, writes_count), |
+ write_delay_(write_delay), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) { |
+ DCHECK_GE(write_delay_, 0); |
+} |
+ |
+DelayedSocketData::DelayedSocketData( |
+ const MockConnect& connect, int write_delay, MockRead* reads, |
+ size_t reads_count, MockWrite* writes, size_t writes_count) |
+ : StaticSocketDataProvider(reads, reads_count, writes, writes_count), |
+ write_delay_(write_delay), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) { |
+ DCHECK_GE(write_delay_, 0); |
+ set_connect_data(connect); |
+} |
+ |
+MockRead DelayedSocketData::GetNextRead() { |
+ if (write_delay_) |
+ return MockRead(true, ERR_IO_PENDING); |
+ return StaticSocketDataProvider::GetNextRead(); |
+} |
+ |
+MockWriteResult DelayedSocketData::OnWrite(const std::string& data) { |
+ MockWriteResult rv = StaticSocketDataProvider::OnWrite(data); |
+ // Now that our write has completed, we can allow reads to continue. |
+ if (!--write_delay_) |
+ MessageLoop::current()->PostDelayedTask(FROM_HERE, |
+ factory_.NewRunnableMethod(&DelayedSocketData::CompleteRead), 100); |
+ return rv; |
+} |
+ |
+void DelayedSocketData::Reset() { |
+ set_socket(NULL); |
+ factory_.RevokeAll(); |
+ StaticSocketDataProvider::Reset(); |
+} |
+ |
+void DelayedSocketData::CompleteRead() { |
+ if (socket()) |
+ socket()->OnReadComplete(GetNextRead()); |
+} |
+ |
void MockClientSocketFactory::AddSocketDataProvider( |
SocketDataProvider* data) { |
mock_data_.Add(data); |