| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 : MockClientSocket(transport_socket->NetLog().net_log()), | 249 : MockClientSocket(transport_socket->NetLog().net_log()), |
| 250 transport_(transport_socket), | 250 transport_(transport_socket), |
| 251 data_(data) { | 251 data_(data) { |
| 252 DCHECK(data_); | 252 DCHECK(data_); |
| 253 } | 253 } |
| 254 | 254 |
| 255 MockSSLClientSocket::~MockSSLClientSocket() { | 255 MockSSLClientSocket::~MockSSLClientSocket() { |
| 256 Disconnect(); | 256 Disconnect(); |
| 257 } | 257 } |
| 258 | 258 |
| 259 void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) { | |
| 260 ssl_info->Reset(); | |
| 261 } | |
| 262 | |
| 263 int MockSSLClientSocket::Connect(net::CompletionCallback* callback) { | 259 int MockSSLClientSocket::Connect(net::CompletionCallback* callback) { |
| 264 ConnectCallback* connect_callback = new ConnectCallback( | 260 ConnectCallback* connect_callback = new ConnectCallback( |
| 265 this, callback, data_->connect.result); | 261 this, callback, data_->connect.result); |
| 266 int rv = transport_->Connect(connect_callback); | 262 int rv = transport_->Connect(connect_callback); |
| 267 if (rv == net::OK) { | 263 if (rv == net::OK) { |
| 268 delete connect_callback; | 264 delete connect_callback; |
| 269 if (data_->connect.async) { | 265 if (data_->connect.async) { |
| 270 RunCallbackAsync(callback, data_->connect.result); | 266 RunCallbackAsync(callback, data_->connect.result); |
| 271 return net::ERR_IO_PENDING; | 267 return net::ERR_IO_PENDING; |
| 272 } | 268 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 286 int MockSSLClientSocket::Read(net::IOBuffer* buf, int buf_len, | 282 int MockSSLClientSocket::Read(net::IOBuffer* buf, int buf_len, |
| 287 net::CompletionCallback* callback) { | 283 net::CompletionCallback* callback) { |
| 288 return transport_->Read(buf, buf_len, callback); | 284 return transport_->Read(buf, buf_len, callback); |
| 289 } | 285 } |
| 290 | 286 |
| 291 int MockSSLClientSocket::Write(net::IOBuffer* buf, int buf_len, | 287 int MockSSLClientSocket::Write(net::IOBuffer* buf, int buf_len, |
| 292 net::CompletionCallback* callback) { | 288 net::CompletionCallback* callback) { |
| 293 return transport_->Write(buf, buf_len, callback); | 289 return transport_->Write(buf, buf_len, callback); |
| 294 } | 290 } |
| 295 | 291 |
| 292 void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) { |
| 293 ssl_info->Reset(); |
| 294 } |
| 295 |
| 296 SSLClientSocket::NextProtoStatus MockSSLClientSocket::GetNextProto( |
| 297 std::string* proto) { |
| 298 *proto = data_->next_proto; |
| 299 return data_->next_proto_status; |
| 300 } |
| 301 |
| 296 MockRead StaticSocketDataProvider::GetNextRead() { | 302 MockRead StaticSocketDataProvider::GetNextRead() { |
| 297 DCHECK(!at_read_eof()); | 303 DCHECK(!at_read_eof()); |
| 298 reads_[read_index_].time_stamp = base::Time::Now(); | 304 reads_[read_index_].time_stamp = base::Time::Now(); |
| 299 return reads_[read_index_++]; | 305 return reads_[read_index_++]; |
| 300 } | 306 } |
| 301 | 307 |
| 302 MockWriteResult StaticSocketDataProvider::OnWrite(const std::string& data) { | 308 MockWriteResult StaticSocketDataProvider::OnWrite(const std::string& data) { |
| 303 if (!writes_) { | 309 if (!writes_) { |
| 304 // Not using mock writes; succeed synchronously. | 310 // Not using mock writes; succeed synchronously. |
| 305 return MockWriteResult(false, data.length()); | 311 return MockWriteResult(false, data.length()); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 reads_.clear(); | 385 reads_.clear(); |
| 380 } | 386 } |
| 381 | 387 |
| 382 void DynamicSocketDataProvider::SimulateRead(const char* data) { | 388 void DynamicSocketDataProvider::SimulateRead(const char* data) { |
| 383 if (!allow_unconsumed_reads_) { | 389 if (!allow_unconsumed_reads_) { |
| 384 EXPECT_TRUE(reads_.empty()) << "Unconsumed read: " << reads_.front().data; | 390 EXPECT_TRUE(reads_.empty()) << "Unconsumed read: " << reads_.front().data; |
| 385 } | 391 } |
| 386 reads_.push_back(MockRead(data)); | 392 reads_.push_back(MockRead(data)); |
| 387 } | 393 } |
| 388 | 394 |
| 395 DelayedSocketData::DelayedSocketData( |
| 396 int write_delay, MockRead* reads, size_t reads_count, |
| 397 MockWrite* writes, size_t writes_count) |
| 398 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), |
| 399 write_delay_(write_delay), |
| 400 ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) { |
| 401 DCHECK_GE(write_delay_, 0); |
| 402 } |
| 403 |
| 404 DelayedSocketData::DelayedSocketData( |
| 405 const MockConnect& connect, int write_delay, MockRead* reads, |
| 406 size_t reads_count, MockWrite* writes, size_t writes_count) |
| 407 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), |
| 408 write_delay_(write_delay), |
| 409 ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) { |
| 410 DCHECK_GE(write_delay_, 0); |
| 411 set_connect_data(connect); |
| 412 } |
| 413 |
| 414 MockRead DelayedSocketData::GetNextRead() { |
| 415 if (write_delay_) |
| 416 return MockRead(true, ERR_IO_PENDING); |
| 417 return StaticSocketDataProvider::GetNextRead(); |
| 418 } |
| 419 |
| 420 MockWriteResult DelayedSocketData::OnWrite(const std::string& data) { |
| 421 MockWriteResult rv = StaticSocketDataProvider::OnWrite(data); |
| 422 // Now that our write has completed, we can allow reads to continue. |
| 423 if (!--write_delay_) |
| 424 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| 425 factory_.NewRunnableMethod(&DelayedSocketData::CompleteRead), 100); |
| 426 return rv; |
| 427 } |
| 428 |
| 429 void DelayedSocketData::Reset() { |
| 430 set_socket(NULL); |
| 431 factory_.RevokeAll(); |
| 432 StaticSocketDataProvider::Reset(); |
| 433 } |
| 434 |
| 435 void DelayedSocketData::CompleteRead() { |
| 436 if (socket()) |
| 437 socket()->OnReadComplete(GetNextRead()); |
| 438 } |
| 439 |
| 389 void MockClientSocketFactory::AddSocketDataProvider( | 440 void MockClientSocketFactory::AddSocketDataProvider( |
| 390 SocketDataProvider* data) { | 441 SocketDataProvider* data) { |
| 391 mock_data_.Add(data); | 442 mock_data_.Add(data); |
| 392 } | 443 } |
| 393 | 444 |
| 394 void MockClientSocketFactory::AddSSLSocketDataProvider( | 445 void MockClientSocketFactory::AddSSLSocketDataProvider( |
| 395 SSLSocketDataProvider* data) { | 446 SSLSocketDataProvider* data) { |
| 396 mock_ssl_data_.Add(data); | 447 mock_ssl_data_.Add(data); |
| 397 } | 448 } |
| 398 | 449 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 | 561 |
| 511 const char kSOCKS5OkRequest[] = | 562 const char kSOCKS5OkRequest[] = |
| 512 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; | 563 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; |
| 513 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); | 564 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); |
| 514 | 565 |
| 515 const char kSOCKS5OkResponse[] = | 566 const char kSOCKS5OkResponse[] = |
| 516 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; | 567 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; |
| 517 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); | 568 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); |
| 518 | 569 |
| 519 } // namespace net | 570 } // namespace net |
| OLD | NEW |