OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/socket/socket_test_util.h" | 5 #include "net/socket/socket_test_util.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 } | 136 } |
137 | 137 |
138 MockConnect::MockConnect(IoMode io_mode, int r, IPEndPoint addr) : | 138 MockConnect::MockConnect(IoMode io_mode, int r, IPEndPoint addr) : |
139 mode(io_mode), | 139 mode(io_mode), |
140 result(r), | 140 result(r), |
141 peer_addr(addr) { | 141 peer_addr(addr) { |
142 } | 142 } |
143 | 143 |
144 MockConnect::~MockConnect() {} | 144 MockConnect::~MockConnect() {} |
145 | 145 |
| 146 bool SocketDataProvider::IsIdle() const { |
| 147 return true; |
| 148 } |
| 149 |
146 StaticSocketDataHelper::StaticSocketDataHelper(MockRead* reads, | 150 StaticSocketDataHelper::StaticSocketDataHelper(MockRead* reads, |
147 size_t reads_count, | 151 size_t reads_count, |
148 MockWrite* writes, | 152 MockWrite* writes, |
149 size_t writes_count) | 153 size_t writes_count) |
150 : reads_(reads), | 154 : reads_(reads), |
151 read_index_(0), | 155 read_index_(0), |
152 read_count_(reads_count), | 156 read_count_(reads_count), |
153 writes_(writes), | 157 writes_(writes), |
154 write_index_(0), | 158 write_index_(0), |
155 write_count_(writes_count) { | 159 write_count_(writes_count) { |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 } | 285 } |
282 | 286 |
283 SequencedSocketData::SequencedSocketData(MockRead* reads, | 287 SequencedSocketData::SequencedSocketData(MockRead* reads, |
284 size_t reads_count, | 288 size_t reads_count, |
285 MockWrite* writes, | 289 MockWrite* writes, |
286 size_t writes_count) | 290 size_t writes_count) |
287 : helper_(reads, reads_count, writes, writes_count), | 291 : helper_(reads, reads_count, writes, writes_count), |
288 sequence_number_(0), | 292 sequence_number_(0), |
289 read_state_(IDLE), | 293 read_state_(IDLE), |
290 write_state_(IDLE), | 294 write_state_(IDLE), |
| 295 busy_before_sync_reads_(false), |
291 weak_factory_(this) { | 296 weak_factory_(this) { |
292 // Check that reads and writes have a contiguous set of sequence numbers | 297 // Check that reads and writes have a contiguous set of sequence numbers |
293 // starting from 0 and working their way up, with no repeats and skipping | 298 // starting from 0 and working their way up, with no repeats and skipping |
294 // no values. | 299 // no values. |
295 size_t next_read = 0; | 300 size_t next_read = 0; |
296 size_t next_write = 0; | 301 size_t next_write = 0; |
297 int next_sequence_number = 0; | 302 int next_sequence_number = 0; |
298 while (next_read < reads_count || next_write < writes_count) { | 303 while (next_read < reads_count || next_write < writes_count) { |
299 if (next_read < reads_count && | 304 if (next_read < reads_count && |
300 reads[next_read].sequence_number == next_sequence_number) { | 305 reads[next_read].sequence_number == next_sequence_number) { |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 } | 425 } |
421 | 426 |
422 bool SequencedSocketData::AllReadDataConsumed() const { | 427 bool SequencedSocketData::AllReadDataConsumed() const { |
423 return helper_.AllReadDataConsumed(); | 428 return helper_.AllReadDataConsumed(); |
424 } | 429 } |
425 | 430 |
426 bool SequencedSocketData::AllWriteDataConsumed() const { | 431 bool SequencedSocketData::AllWriteDataConsumed() const { |
427 return helper_.AllWriteDataConsumed(); | 432 return helper_.AllWriteDataConsumed(); |
428 } | 433 } |
429 | 434 |
| 435 bool SequencedSocketData::IsIdle() const { |
| 436 // If |busy_before_sync_reads_| is not set, always considered idle. If |
| 437 // no reads left, or the next operation is a write, also consider it idle. |
| 438 if (!busy_before_sync_reads_ || helper_.AllReadDataConsumed() || |
| 439 helper_.PeekRead().sequence_number != sequence_number_) { |
| 440 return true; |
| 441 } |
| 442 |
| 443 // If the next operation is synchronous read, treat the socket as not idle. |
| 444 if (helper_.PeekRead().mode == SYNCHRONOUS) |
| 445 return false; |
| 446 return true; |
| 447 } |
| 448 |
430 bool SequencedSocketData::IsReadPaused() { | 449 bool SequencedSocketData::IsReadPaused() { |
431 return read_state_ == PAUSED; | 450 return read_state_ == PAUSED; |
432 } | 451 } |
433 | 452 |
434 void SequencedSocketData::CompleteRead() { | 453 void SequencedSocketData::CompleteRead() { |
435 if (read_state_ != PAUSED) { | 454 if (read_state_ != PAUSED) { |
436 ADD_FAILURE() << "Unable to CompleteRead when not paused."; | 455 ADD_FAILURE() << "Unable to CompleteRead when not paused."; |
437 return; | 456 return; |
438 } | 457 } |
439 read_state_ = COMPLETING; | 458 read_state_ = COMPLETING; |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1052 MockClientSocket::Disconnect(); | 1071 MockClientSocket::Disconnect(); |
1053 pending_connect_callback_.Reset(); | 1072 pending_connect_callback_.Reset(); |
1054 pending_read_callback_.Reset(); | 1073 pending_read_callback_.Reset(); |
1055 } | 1074 } |
1056 | 1075 |
1057 bool MockTCPClientSocket::IsConnected() const { | 1076 bool MockTCPClientSocket::IsConnected() const { |
1058 return connected_ && !peer_closed_connection_; | 1077 return connected_ && !peer_closed_connection_; |
1059 } | 1078 } |
1060 | 1079 |
1061 bool MockTCPClientSocket::IsConnectedAndIdle() const { | 1080 bool MockTCPClientSocket::IsConnectedAndIdle() const { |
1062 return IsConnected(); | 1081 return IsConnected() && data_->IsIdle(); |
1063 } | 1082 } |
1064 | 1083 |
1065 int MockTCPClientSocket::GetPeerAddress(IPEndPoint* address) const { | 1084 int MockTCPClientSocket::GetPeerAddress(IPEndPoint* address) const { |
1066 if (addresses_.empty()) | 1085 if (addresses_.empty()) |
1067 return MockClientSocket::GetPeerAddress(address); | 1086 return MockClientSocket::GetPeerAddress(address); |
1068 | 1087 |
1069 *address = addresses_[0]; | 1088 *address = addresses_[0]; |
1070 return OK; | 1089 return OK; |
1071 } | 1090 } |
1072 | 1091 |
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1496 void MockSSLClientSocket::Disconnect() { | 1515 void MockSSLClientSocket::Disconnect() { |
1497 MockClientSocket::Disconnect(); | 1516 MockClientSocket::Disconnect(); |
1498 if (transport_->socket() != NULL) | 1517 if (transport_->socket() != NULL) |
1499 transport_->socket()->Disconnect(); | 1518 transport_->socket()->Disconnect(); |
1500 } | 1519 } |
1501 | 1520 |
1502 bool MockSSLClientSocket::IsConnected() const { | 1521 bool MockSSLClientSocket::IsConnected() const { |
1503 return transport_->socket()->IsConnected(); | 1522 return transport_->socket()->IsConnected(); |
1504 } | 1523 } |
1505 | 1524 |
| 1525 bool MockSSLClientSocket::IsConnectedAndIdle() const { |
| 1526 return transport_->socket()->IsConnectedAndIdle(); |
| 1527 } |
| 1528 |
1506 bool MockSSLClientSocket::WasEverUsed() const { | 1529 bool MockSSLClientSocket::WasEverUsed() const { |
1507 return transport_->socket()->WasEverUsed(); | 1530 return transport_->socket()->WasEverUsed(); |
1508 } | 1531 } |
1509 | 1532 |
1510 bool MockSSLClientSocket::UsingTCPFastOpen() const { | 1533 bool MockSSLClientSocket::UsingTCPFastOpen() const { |
1511 return transport_->socket()->UsingTCPFastOpen(); | 1534 return transport_->socket()->UsingTCPFastOpen(); |
1512 } | 1535 } |
1513 | 1536 |
1514 int MockSSLClientSocket::GetPeerAddress(IPEndPoint* address) const { | 1537 int MockSSLClientSocket::GetPeerAddress(IPEndPoint* address) const { |
1515 return transport_->socket()->GetPeerAddress(address); | 1538 return transport_->socket()->GetPeerAddress(address); |
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2066 } | 2089 } |
2067 | 2090 |
2068 int64_t CountWriteBytes(const MockWrite writes[], size_t writes_size) { | 2091 int64_t CountWriteBytes(const MockWrite writes[], size_t writes_size) { |
2069 int64_t total = 0; | 2092 int64_t total = 0; |
2070 for (const MockWrite* write = writes; write != writes + writes_size; ++write) | 2093 for (const MockWrite* write = writes; write != writes + writes_size; ++write) |
2071 total += write->data_len; | 2094 total += write->data_len; |
2072 return total; | 2095 return total; |
2073 } | 2096 } |
2074 | 2097 |
2075 } // namespace net | 2098 } // namespace net |
OLD | NEW |