Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(655)

Side by Side Diff: net/socket/socket_test_util.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 void DumpData(const char* data, int data_len) { 58 void DumpData(const char* data, int data_len) {
59 if (logging::LOG_INFO < logging::GetMinLogLevel()) 59 if (logging::LOG_INFO < logging::GetMinLogLevel())
60 return; 60 return;
61 DVLOG(1) << "Length: " << data_len; 61 DVLOG(1) << "Length: " << data_len;
62 const char* pfx = "Data: "; 62 const char* pfx = "Data: ";
63 if (!data || (data_len <= 0)) { 63 if (!data || (data_len <= 0)) {
64 DVLOG(1) << pfx << "<None>"; 64 DVLOG(1) << pfx << "<None>";
65 } else { 65 } else {
66 int i; 66 int i;
67 for (i = 0; i <= (data_len - 4); i += 4) { 67 for (i = 0; i <= (data_len - 4); i += 4) {
68 DVLOG(1) << pfx 68 DVLOG(1) << pfx << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
69 << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
70 << AsciifyHigh(data[i + 1]) << AsciifyLow(data[i + 1]) 69 << AsciifyHigh(data[i + 1]) << AsciifyLow(data[i + 1])
71 << AsciifyHigh(data[i + 2]) << AsciifyLow(data[i + 2]) 70 << AsciifyHigh(data[i + 2]) << AsciifyLow(data[i + 2])
72 << AsciifyHigh(data[i + 3]) << AsciifyLow(data[i + 3]) 71 << AsciifyHigh(data[i + 3]) << AsciifyLow(data[i + 3]) << " '"
73 << " '" 72 << Asciify(data[i + 0]) << Asciify(data[i + 1])
74 << Asciify(data[i + 0]) 73 << Asciify(data[i + 2]) << Asciify(data[i + 3]) << "'";
75 << Asciify(data[i + 1])
76 << Asciify(data[i + 2])
77 << Asciify(data[i + 3])
78 << "'";
79 pfx = " "; 74 pfx = " ";
80 } 75 }
81 // Take care of any 'trailing' bytes, if data_len was not a multiple of 4. 76 // Take care of any 'trailing' bytes, if data_len was not a multiple of 4.
82 switch (data_len - i) { 77 switch (data_len - i) {
83 case 3: 78 case 3:
84 DVLOG(1) << pfx 79 DVLOG(1) << pfx << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
85 << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
86 << AsciifyHigh(data[i + 1]) << AsciifyLow(data[i + 1]) 80 << AsciifyHigh(data[i + 1]) << AsciifyLow(data[i + 1])
87 << AsciifyHigh(data[i + 2]) << AsciifyLow(data[i + 2]) 81 << AsciifyHigh(data[i + 2]) << AsciifyLow(data[i + 2])
88 << " '" 82 << " '" << Asciify(data[i + 0]) << Asciify(data[i + 1])
89 << Asciify(data[i + 0]) 83 << Asciify(data[i + 2]) << " '";
90 << Asciify(data[i + 1])
91 << Asciify(data[i + 2])
92 << " '";
93 break; 84 break;
94 case 2: 85 case 2:
95 DVLOG(1) << pfx 86 DVLOG(1) << pfx << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
96 << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
97 << AsciifyHigh(data[i + 1]) << AsciifyLow(data[i + 1]) 87 << AsciifyHigh(data[i + 1]) << AsciifyLow(data[i + 1])
98 << " '" 88 << " '" << Asciify(data[i + 0]) << Asciify(data[i + 1])
99 << Asciify(data[i + 0])
100 << Asciify(data[i + 1])
101 << " '"; 89 << " '";
102 break; 90 break;
103 case 1: 91 case 1:
104 DVLOG(1) << pfx 92 DVLOG(1) << pfx << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0])
105 << AsciifyHigh(data[i + 0]) << AsciifyLow(data[i + 0]) 93 << " '" << Asciify(data[i + 0]) << " '";
106 << " '"
107 << Asciify(data[i + 0])
108 << " '";
109 break; 94 break;
110 } 95 }
111 } 96 }
112 } 97 }
113 98
114 template <MockReadWriteType type> 99 template <MockReadWriteType type>
115 void DumpMockReadWrite(const MockReadWrite<type>& r) { 100 void DumpMockReadWrite(const MockReadWrite<type>& r) {
116 if (logging::LOG_INFO < logging::GetMinLogLevel()) 101 if (logging::LOG_INFO < logging::GetMinLogLevel())
117 return; 102 return;
118 DVLOG(1) << "Async: " << (r.mode == ASYNC) 103 DVLOG(1) << "Async: " << (r.mode == ASYNC) << "\nResult: " << r.result;
119 << "\nResult: " << r.result;
120 DumpData(r.data, r.data_len); 104 DumpData(r.data, r.data_len);
121 const char* stop = (r.sequence_number & MockRead::STOPLOOP) ? " (STOP)" : ""; 105 const char* stop = (r.sequence_number & MockRead::STOPLOOP) ? " (STOP)" : "";
122 DVLOG(1) << "Stage: " << (r.sequence_number & ~MockRead::STOPLOOP) << stop 106 DVLOG(1) << "Stage: " << (r.sequence_number & ~MockRead::STOPLOOP) << stop
123 << "\nTime: " << r.time_stamp.ToInternalValue(); 107 << "\nTime: " << r.time_stamp.ToInternalValue();
124 } 108 }
125 109
126 } // namespace 110 } // namespace
127 111
128 MockConnect::MockConnect() : mode(ASYNC), result(OK) { 112 MockConnect::MockConnect() : mode(ASYNC), result(OK) {
129 IPAddressNumber ip; 113 IPAddressNumber ip;
130 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); 114 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
131 peer_addr = IPEndPoint(ip, 0); 115 peer_addr = IPEndPoint(ip, 0);
132 } 116 }
133 117
134 MockConnect::MockConnect(IoMode io_mode, int r) : mode(io_mode), result(r) { 118 MockConnect::MockConnect(IoMode io_mode, int r) : mode(io_mode), result(r) {
135 IPAddressNumber ip; 119 IPAddressNumber ip;
136 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); 120 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
137 peer_addr = IPEndPoint(ip, 0); 121 peer_addr = IPEndPoint(ip, 0);
138 } 122 }
139 123
140 MockConnect::MockConnect(IoMode io_mode, int r, IPEndPoint addr) : 124 MockConnect::MockConnect(IoMode io_mode, int r, IPEndPoint addr)
141 mode(io_mode), 125 : mode(io_mode), result(r), peer_addr(addr) {
142 result(r),
143 peer_addr(addr) {
144 } 126 }
145 127
146 MockConnect::~MockConnect() {} 128 MockConnect::~MockConnect() {
129 }
147 130
148 StaticSocketDataProvider::StaticSocketDataProvider() 131 StaticSocketDataProvider::StaticSocketDataProvider()
149 : reads_(NULL), 132 : reads_(NULL),
150 read_index_(0), 133 read_index_(0),
151 read_count_(0), 134 read_count_(0),
152 writes_(NULL), 135 writes_(NULL),
153 write_index_(0), 136 write_index_(0),
154 write_count_(0) { 137 write_count_(0) {
155 } 138 }
156 139
157 StaticSocketDataProvider::StaticSocketDataProvider(MockRead* reads, 140 StaticSocketDataProvider::StaticSocketDataProvider(MockRead* reads,
158 size_t reads_count, 141 size_t reads_count,
159 MockWrite* writes, 142 MockWrite* writes,
160 size_t writes_count) 143 size_t writes_count)
161 : reads_(reads), 144 : reads_(reads),
162 read_index_(0), 145 read_index_(0),
163 read_count_(reads_count), 146 read_count_(reads_count),
164 writes_(writes), 147 writes_(writes),
165 write_index_(0), 148 write_index_(0),
166 write_count_(writes_count) { 149 write_count_(writes_count) {
167 } 150 }
168 151
169 StaticSocketDataProvider::~StaticSocketDataProvider() {} 152 StaticSocketDataProvider::~StaticSocketDataProvider() {
153 }
170 154
171 const MockRead& StaticSocketDataProvider::PeekRead() const { 155 const MockRead& StaticSocketDataProvider::PeekRead() const {
172 CHECK(!at_read_eof()); 156 CHECK(!at_read_eof());
173 return reads_[read_index_]; 157 return reads_[read_index_];
174 } 158 }
175 159
176 const MockWrite& StaticSocketDataProvider::PeekWrite() const { 160 const MockWrite& StaticSocketDataProvider::PeekWrite() const {
177 CHECK(!at_write_eof()); 161 CHECK(!at_write_eof());
178 return writes_[write_index_]; 162 return writes_[write_index_];
179 } 163 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 } 213 }
230 return MockWriteResult(w->mode, result); 214 return MockWriteResult(w->mode, result);
231 } 215 }
232 216
233 void StaticSocketDataProvider::Reset() { 217 void StaticSocketDataProvider::Reset() {
234 read_index_ = 0; 218 read_index_ = 0;
235 write_index_ = 0; 219 write_index_ = 0;
236 } 220 }
237 221
238 DynamicSocketDataProvider::DynamicSocketDataProvider() 222 DynamicSocketDataProvider::DynamicSocketDataProvider()
239 : short_read_limit_(0), 223 : short_read_limit_(0), allow_unconsumed_reads_(false) {
240 allow_unconsumed_reads_(false) {
241 } 224 }
242 225
243 DynamicSocketDataProvider::~DynamicSocketDataProvider() {} 226 DynamicSocketDataProvider::~DynamicSocketDataProvider() {
227 }
244 228
245 MockRead DynamicSocketDataProvider::GetNextRead() { 229 MockRead DynamicSocketDataProvider::GetNextRead() {
246 if (reads_.empty()) 230 if (reads_.empty())
247 return MockRead(SYNCHRONOUS, ERR_UNEXPECTED); 231 return MockRead(SYNCHRONOUS, ERR_UNEXPECTED);
248 MockRead result = reads_.front(); 232 MockRead result = reads_.front();
249 if (short_read_limit_ == 0 || result.data_len <= short_read_limit_) { 233 if (short_read_limit_ == 0 || result.data_len <= short_read_limit_) {
250 reads_.pop_front(); 234 reads_.pop_front();
251 } else { 235 } else {
252 result.data_len = short_read_limit_; 236 result.data_len = short_read_limit_;
253 reads_.front().data += result.data_len; 237 reads_.front().data += result.data_len;
(...skipping 27 matching lines...) Expand all
281 SSLSocketDataProvider::~SSLSocketDataProvider() { 265 SSLSocketDataProvider::~SSLSocketDataProvider() {
282 } 266 }
283 267
284 void SSLSocketDataProvider::SetNextProto(NextProto proto) { 268 void SSLSocketDataProvider::SetNextProto(NextProto proto) {
285 was_npn_negotiated = true; 269 was_npn_negotiated = true;
286 next_proto_status = SSLClientSocket::kNextProtoNegotiated; 270 next_proto_status = SSLClientSocket::kNextProtoNegotiated;
287 protocol_negotiated = proto; 271 protocol_negotiated = proto;
288 next_proto = SSLClientSocket::NextProtoToString(proto); 272 next_proto = SSLClientSocket::NextProtoToString(proto);
289 } 273 }
290 274
291 DelayedSocketData::DelayedSocketData( 275 DelayedSocketData::DelayedSocketData(int write_delay,
292 int write_delay, MockRead* reads, size_t reads_count, 276 MockRead* reads,
293 MockWrite* writes, size_t writes_count) 277 size_t reads_count,
278 MockWrite* writes,
279 size_t writes_count)
294 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 280 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
295 write_delay_(write_delay), 281 write_delay_(write_delay),
296 read_in_progress_(false), 282 read_in_progress_(false),
297 weak_factory_(this) { 283 weak_factory_(this) {
298 DCHECK_GE(write_delay_, 0); 284 DCHECK_GE(write_delay_, 0);
299 } 285 }
300 286
301 DelayedSocketData::DelayedSocketData( 287 DelayedSocketData::DelayedSocketData(const MockConnect& connect,
302 const MockConnect& connect, int write_delay, MockRead* reads, 288 int write_delay,
303 size_t reads_count, MockWrite* writes, size_t writes_count) 289 MockRead* reads,
290 size_t reads_count,
291 MockWrite* writes,
292 size_t writes_count)
304 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 293 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
305 write_delay_(write_delay), 294 write_delay_(write_delay),
306 read_in_progress_(false), 295 read_in_progress_(false),
307 weak_factory_(this) { 296 weak_factory_(this) {
308 DCHECK_GE(write_delay_, 0); 297 DCHECK_GE(write_delay_, 0);
309 set_connect_data(connect); 298 set_connect_data(connect);
310 } 299 }
311 300
312 DelayedSocketData::~DelayedSocketData() { 301 DelayedSocketData::~DelayedSocketData() {
313 } 302 }
(...skipping 29 matching lines...) Expand all
343 read_in_progress_ = false; 332 read_in_progress_ = false;
344 weak_factory_.InvalidateWeakPtrs(); 333 weak_factory_.InvalidateWeakPtrs();
345 StaticSocketDataProvider::Reset(); 334 StaticSocketDataProvider::Reset();
346 } 335 }
347 336
348 void DelayedSocketData::CompleteRead() { 337 void DelayedSocketData::CompleteRead() {
349 if (socket() && read_in_progress_) 338 if (socket() && read_in_progress_)
350 socket()->OnReadComplete(GetNextRead()); 339 socket()->OnReadComplete(GetNextRead());
351 } 340 }
352 341
353 OrderedSocketData::OrderedSocketData( 342 OrderedSocketData::OrderedSocketData(MockRead* reads,
354 MockRead* reads, size_t reads_count, MockWrite* writes, size_t writes_count) 343 size_t reads_count,
344 MockWrite* writes,
345 size_t writes_count)
355 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 346 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
356 sequence_number_(0), loop_stop_stage_(0), 347 sequence_number_(0),
357 blocked_(false), weak_factory_(this) { 348 loop_stop_stage_(0),
349 blocked_(false),
350 weak_factory_(this) {
358 } 351 }
359 352
360 OrderedSocketData::OrderedSocketData( 353 OrderedSocketData::OrderedSocketData(const MockConnect& connect,
361 const MockConnect& connect, 354 MockRead* reads,
362 MockRead* reads, size_t reads_count, 355 size_t reads_count,
363 MockWrite* writes, size_t writes_count) 356 MockWrite* writes,
357 size_t writes_count)
364 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 358 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
365 sequence_number_(0), loop_stop_stage_(0), 359 sequence_number_(0),
366 blocked_(false), weak_factory_(this) { 360 loop_stop_stage_(0),
361 blocked_(false),
362 weak_factory_(this) {
367 set_connect_data(connect); 363 set_connect_data(connect);
368 } 364 }
369 365
370 void OrderedSocketData::EndLoop() { 366 void OrderedSocketData::EndLoop() {
371 // If we've already stopped the loop, don't do it again until we've advanced 367 // If we've already stopped the loop, don't do it again until we've advanced
372 // to the next sequence_number. 368 // to the next sequence_number.
373 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": EndLoop()"; 369 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": EndLoop()";
374 if (loop_stop_stage_ > 0) { 370 if (loop_stop_stage_ > 0) {
375 const MockRead& next_read = StaticSocketDataProvider::PeekRead(); 371 const MockRead& next_read = StaticSocketDataProvider::PeekRead();
376 if ((next_read.sequence_number & ~MockRead::STOPLOOP) > 372 if ((next_read.sequence_number & ~MockRead::STOPLOOP) > loop_stop_stage_) {
377 loop_stop_stage_) {
378 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 373 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_
379 << ": Clearing stop index"; 374 << ": Clearing stop index";
380 loop_stop_stage_ = 0; 375 loop_stop_stage_ = 0;
381 } else { 376 } else {
382 return; 377 return;
383 } 378 }
384 } 379 }
385 // Record the sequence_number at which we stopped the loop. 380 // Record the sequence_number at which we stopped the loop.
386 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 381 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_
387 << ": Posting Quit at read " << read_index(); 382 << ": Posting Quit at read " << read_index();
388 loop_stop_stage_ = sequence_number_; 383 loop_stop_stage_ = sequence_number_;
389 } 384 }
390 385
391 MockRead OrderedSocketData::GetNextRead() { 386 MockRead OrderedSocketData::GetNextRead() {
392 weak_factory_.InvalidateWeakPtrs(); 387 weak_factory_.InvalidateWeakPtrs();
393 blocked_ = false; 388 blocked_ = false;
394 const MockRead& next_read = StaticSocketDataProvider::PeekRead(); 389 const MockRead& next_read = StaticSocketDataProvider::PeekRead();
395 if (next_read.sequence_number & MockRead::STOPLOOP) 390 if (next_read.sequence_number & MockRead::STOPLOOP)
396 EndLoop(); 391 EndLoop();
397 if ((next_read.sequence_number & ~MockRead::STOPLOOP) <= 392 if ((next_read.sequence_number & ~MockRead::STOPLOOP) <= sequence_number_++) {
398 sequence_number_++) { 393 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1 << ": Read "
399 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1 394 << read_index();
400 << ": Read " << read_index();
401 DumpMockReadWrite(next_read); 395 DumpMockReadWrite(next_read);
402 blocked_ = (next_read.result == ERR_IO_PENDING); 396 blocked_ = (next_read.result == ERR_IO_PENDING);
403 return StaticSocketDataProvider::GetNextRead(); 397 return StaticSocketDataProvider::GetNextRead();
404 } 398 }
405 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1 399 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1
406 << ": I/O Pending"; 400 << ": I/O Pending";
407 MockRead result = MockRead(ASYNC, ERR_IO_PENDING); 401 MockRead result = MockRead(ASYNC, ERR_IO_PENDING);
408 DumpMockReadWrite(result); 402 DumpMockReadWrite(result);
409 blocked_ = true; 403 blocked_ = true;
410 return result; 404 return result;
411 } 405 }
412 406
413 MockWriteResult OrderedSocketData::OnWrite(const std::string& data) { 407 MockWriteResult OrderedSocketData::OnWrite(const std::string& data) {
414 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 408 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": Write "
415 << ": Write " << write_index(); 409 << write_index();
416 DumpMockReadWrite(PeekWrite()); 410 DumpMockReadWrite(PeekWrite());
417 ++sequence_number_; 411 ++sequence_number_;
418 if (blocked_) { 412 if (blocked_) {
419 // TODO(willchan): This 100ms delay seems to work around some weirdness. We 413 // TODO(willchan): This 100ms delay seems to work around some weirdness. We
420 // should probably fix the weirdness. One example is in SpdyStream, 414 // should probably fix the weirdness. One example is in SpdyStream,
421 // DoSendRequest() will return ERR_IO_PENDING, and there's a race. If the 415 // DoSendRequest() will return ERR_IO_PENDING, and there's a race. If the
422 // SYN_REPLY causes OnResponseReceived() to get called before 416 // SYN_REPLY causes OnResponseReceived() to get called before
423 // SpdyStream::ReadResponseHeaders() is called, we hit a NOTREACHED(). 417 // SpdyStream::ReadResponseHeaders() is called, we hit a NOTREACHED().
424 base::MessageLoop::current()->PostDelayedTask( 418 base::MessageLoop::current()->PostDelayedTask(
425 FROM_HERE, 419 FROM_HERE,
426 base::Bind(&OrderedSocketData::CompleteRead, 420 base::Bind(&OrderedSocketData::CompleteRead,
427 weak_factory_.GetWeakPtr()), 421 weak_factory_.GetWeakPtr()),
428 base::TimeDelta::FromMilliseconds(100)); 422 base::TimeDelta::FromMilliseconds(100));
429 } 423 }
430 return StaticSocketDataProvider::OnWrite(data); 424 return StaticSocketDataProvider::OnWrite(data);
431 } 425 }
432 426
433 void OrderedSocketData::Reset() { 427 void OrderedSocketData::Reset() {
434 NET_TRACE(INFO, " *** ") << "Stage " 428 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": Reset()";
435 << sequence_number_ << ": Reset()";
436 sequence_number_ = 0; 429 sequence_number_ = 0;
437 loop_stop_stage_ = 0; 430 loop_stop_stage_ = 0;
438 set_socket(NULL); 431 set_socket(NULL);
439 weak_factory_.InvalidateWeakPtrs(); 432 weak_factory_.InvalidateWeakPtrs();
440 StaticSocketDataProvider::Reset(); 433 StaticSocketDataProvider::Reset();
441 } 434 }
442 435
443 void OrderedSocketData::CompleteRead() { 436 void OrderedSocketData::CompleteRead() {
444 if (socket() && blocked_) { 437 if (socket() && blocked_) {
445 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_; 438 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_;
446 socket()->OnReadComplete(GetNextRead()); 439 socket()->OnReadComplete(GetNextRead());
447 } 440 }
448 } 441 }
449 442
450 OrderedSocketData::~OrderedSocketData() {} 443 OrderedSocketData::~OrderedSocketData() {
444 }
451 445
452 DeterministicSocketData::DeterministicSocketData(MockRead* reads, 446 DeterministicSocketData::DeterministicSocketData(MockRead* reads,
453 size_t reads_count, MockWrite* writes, size_t writes_count) 447 size_t reads_count,
448 MockWrite* writes,
449 size_t writes_count)
454 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 450 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
455 sequence_number_(0), 451 sequence_number_(0),
456 current_read_(), 452 current_read_(),
457 current_write_(), 453 current_write_(),
458 stopping_sequence_number_(0), 454 stopping_sequence_number_(0),
459 stopped_(false), 455 stopped_(false),
460 print_debug_(false), 456 print_debug_(false),
461 is_running_(false) { 457 is_running_(false) {
462 VerifyCorrectSequenceNumbers(reads, reads_count, writes, writes_count); 458 VerifyCorrectSequenceNumbers(reads, reads_count, writes, writes_count);
463 } 459 }
464 460
465 DeterministicSocketData::~DeterministicSocketData() {} 461 DeterministicSocketData::~DeterministicSocketData() {
462 }
466 463
467 void DeterministicSocketData::Run() { 464 void DeterministicSocketData::Run() {
468 DCHECK(!is_running_); 465 DCHECK(!is_running_);
469 is_running_ = true; 466 is_running_ = true;
470 467
471 SetStopped(false); 468 SetStopped(false);
472 int counter = 0; 469 int counter = 0;
473 // Continue to consume data until all data has run out, or the stopped_ flag 470 // Continue to consume data until all data has run out, or the stopped_ flag
474 // has been set. Consuming data requires two separate operations -- running 471 // has been set. Consuming data requires two separate operations -- running
475 // the tasks in the message loop, and explicitly invoking the read/write 472 // the tasks in the message loop, and explicitly invoking the read/write
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 return MockRead(SYNCHRONOUS, ERR_UNEXPECTED); 516 return MockRead(SYNCHRONOUS, ERR_UNEXPECTED);
520 } 517 }
521 518
522 // Async read which will be called back in a future step. 519 // Async read which will be called back in a future step.
523 if (sequence_number_ < current_read_.sequence_number) { 520 if (sequence_number_ < current_read_.sequence_number) {
524 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 521 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_
525 << ": I/O Pending"; 522 << ": I/O Pending";
526 MockRead result = MockRead(SYNCHRONOUS, ERR_IO_PENDING); 523 MockRead result = MockRead(SYNCHRONOUS, ERR_IO_PENDING);
527 if (current_read_.mode == SYNCHRONOUS) { 524 if (current_read_.mode == SYNCHRONOUS) {
528 LOG(ERROR) << "Unable to perform synchronous read: " 525 LOG(ERROR) << "Unable to perform synchronous read: "
529 << current_read_.sequence_number 526 << current_read_.sequence_number
530 << " at stage: " << sequence_number_; 527 << " at stage: " << sequence_number_;
531 result = MockRead(SYNCHRONOUS, ERR_UNEXPECTED); 528 result = MockRead(SYNCHRONOUS, ERR_UNEXPECTED);
532 } 529 }
533 if (print_debug_) 530 if (print_debug_)
534 DumpMockReadWrite(result); 531 DumpMockReadWrite(result);
535 return result; 532 return result;
536 } 533 }
537 534
538 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 535 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": Read "
539 << ": Read " << read_index(); 536 << read_index();
540 if (print_debug_) 537 if (print_debug_)
541 DumpMockReadWrite(current_read_); 538 DumpMockReadWrite(current_read_);
542 539
543 // Increment the sequence number if IO is complete 540 // Increment the sequence number if IO is complete
544 if (current_read_.mode == SYNCHRONOUS) 541 if (current_read_.mode == SYNCHRONOUS)
545 NextStep(); 542 NextStep();
546 543
547 DCHECK_NE(ERR_IO_PENDING, current_read_.result); 544 DCHECK_NE(ERR_IO_PENDING, current_read_.result);
548 StaticSocketDataProvider::GetNextRead(); 545 StaticSocketDataProvider::GetNextRead();
549 546
550 return current_read_; 547 return current_read_;
551 } 548 }
552 549
553 MockWriteResult DeterministicSocketData::OnWrite(const std::string& data) { 550 MockWriteResult DeterministicSocketData::OnWrite(const std::string& data) {
554 const MockWrite& next_write = StaticSocketDataProvider::PeekWrite(); 551 const MockWrite& next_write = StaticSocketDataProvider::PeekWrite();
555 current_write_ = next_write; 552 current_write_ = next_write;
556 553
557 // Synchronous write while stopped is an error 554 // Synchronous write while stopped is an error
558 if (stopped() && next_write.mode == SYNCHRONOUS) { 555 if (stopped() && next_write.mode == SYNCHRONOUS) {
559 LOG(ERROR) << "Unable to perform synchronous IO while stopped"; 556 LOG(ERROR) << "Unable to perform synchronous IO while stopped";
560 return MockWriteResult(SYNCHRONOUS, ERR_UNEXPECTED); 557 return MockWriteResult(SYNCHRONOUS, ERR_UNEXPECTED);
561 } 558 }
562 559
563 // Async write which will be called back in a future step. 560 // Async write which will be called back in a future step.
564 if (sequence_number_ < next_write.sequence_number) { 561 if (sequence_number_ < next_write.sequence_number) {
565 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 562 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_
566 << ": I/O Pending"; 563 << ": I/O Pending";
567 if (next_write.mode == SYNCHRONOUS) { 564 if (next_write.mode == SYNCHRONOUS) {
568 LOG(ERROR) << "Unable to perform synchronous write: " 565 LOG(ERROR) << "Unable to perform synchronous write: "
569 << next_write.sequence_number << " at stage: " << sequence_number_; 566 << next_write.sequence_number
567 << " at stage: " << sequence_number_;
570 return MockWriteResult(SYNCHRONOUS, ERR_UNEXPECTED); 568 return MockWriteResult(SYNCHRONOUS, ERR_UNEXPECTED);
571 } 569 }
572 } else { 570 } else {
573 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ 571 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": Write "
574 << ": Write " << write_index(); 572 << write_index();
575 } 573 }
576 574
577 if (print_debug_) 575 if (print_debug_)
578 DumpMockReadWrite(next_write); 576 DumpMockReadWrite(next_write);
579 577
580 // Move to the next step if I/O is synchronous, since the operation will 578 // Move to the next step if I/O is synchronous, since the operation will
581 // complete when this method returns. 579 // complete when this method returns.
582 if (next_write.mode == SYNCHRONOUS) 580 if (next_write.mode == SYNCHRONOUS)
583 NextStep(); 581 NextStep();
584 582
585 // This is either a sync write for this step, or an async write. 583 // This is either a sync write for this step, or an async write.
586 return StaticSocketDataProvider::OnWrite(data); 584 return StaticSocketDataProvider::OnWrite(data);
587 } 585 }
588 586
589 void DeterministicSocketData::Reset() { 587 void DeterministicSocketData::Reset() {
590 NET_TRACE(INFO, " *** ") << "Stage " 588 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ << ": Reset()";
591 << sequence_number_ << ": Reset()";
592 sequence_number_ = 0; 589 sequence_number_ = 0;
593 StaticSocketDataProvider::Reset(); 590 StaticSocketDataProvider::Reset();
594 NOTREACHED(); 591 NOTREACHED();
595 } 592 }
596 593
597 void DeterministicSocketData::InvokeCallbacks() { 594 void DeterministicSocketData::InvokeCallbacks() {
598 if (delegate_.get() && delegate_->WritePending() && 595 if (delegate_.get() && delegate_->WritePending() &&
599 (current_write().sequence_number == sequence_number())) { 596 (current_write().sequence_number == sequence_number())) {
600 NextStep(); 597 NextStep();
601 delegate_->CompleteWrite(); 598 delegate_->CompleteWrite();
602 return; 599 return;
603 } 600 }
604 if (delegate_.get() && delegate_->ReadPending() && 601 if (delegate_.get() && delegate_->ReadPending() &&
605 (current_read().sequence_number == sequence_number())) { 602 (current_read().sequence_number == sequence_number())) {
606 NextStep(); 603 NextStep();
607 delegate_->CompleteRead(); 604 delegate_->CompleteRead();
608 return; 605 return;
609 } 606 }
610 } 607 }
611 608
612 void DeterministicSocketData::NextStep() { 609 void DeterministicSocketData::NextStep() {
613 // Invariant: Can never move *past* the stopping step. 610 // Invariant: Can never move *past* the stopping step.
614 DCHECK_LT(sequence_number_, stopping_sequence_number_); 611 DCHECK_LT(sequence_number_, stopping_sequence_number_);
615 sequence_number_++; 612 sequence_number_++;
616 if (sequence_number_ == stopping_sequence_number_) 613 if (sequence_number_ == stopping_sequence_number_)
617 SetStopped(true); 614 SetStopped(true);
618 } 615 }
619 616
620 void DeterministicSocketData::VerifyCorrectSequenceNumbers( 617 void DeterministicSocketData::VerifyCorrectSequenceNumbers(
621 MockRead* reads, size_t reads_count, 618 MockRead* reads,
622 MockWrite* writes, size_t writes_count) { 619 size_t reads_count,
620 MockWrite* writes,
621 size_t writes_count) {
623 size_t read = 0; 622 size_t read = 0;
624 size_t write = 0; 623 size_t write = 0;
625 int expected = 0; 624 int expected = 0;
626 while (read < reads_count || write < writes_count) { 625 while (read < reads_count || write < writes_count) {
627 // Check to see that we have a read or write at the expected 626 // Check to see that we have a read or write at the expected
628 // state. 627 // state.
629 if (read < reads_count && reads[read].sequence_number == expected) { 628 if (read < reads_count && reads[read].sequence_number == expected) {
630 ++read; 629 ++read;
631 ++expected; 630 ++expected;
632 continue; 631 continue;
633 } 632 }
634 if (write < writes_count && writes[write].sequence_number == expected) { 633 if (write < writes_count && writes[write].sequence_number == expected) {
635 ++write; 634 ++write;
636 ++expected; 635 ++expected;
637 continue; 636 continue;
638 } 637 }
639 NOTREACHED() << "Missing sequence number: " << expected; 638 NOTREACHED() << "Missing sequence number: " << expected;
640 return; 639 return;
641 } 640 }
642 DCHECK_EQ(read, reads_count); 641 DCHECK_EQ(read, reads_count);
643 DCHECK_EQ(write, writes_count); 642 DCHECK_EQ(write, writes_count);
644 } 643 }
645 644
646 MockClientSocketFactory::MockClientSocketFactory() {} 645 MockClientSocketFactory::MockClientSocketFactory() {
646 }
647 647
648 MockClientSocketFactory::~MockClientSocketFactory() {} 648 MockClientSocketFactory::~MockClientSocketFactory() {
649 }
649 650
650 void MockClientSocketFactory::AddSocketDataProvider( 651 void MockClientSocketFactory::AddSocketDataProvider(SocketDataProvider* data) {
651 SocketDataProvider* data) {
652 mock_data_.Add(data); 652 mock_data_.Add(data);
653 } 653 }
654 654
655 void MockClientSocketFactory::AddSSLSocketDataProvider( 655 void MockClientSocketFactory::AddSSLSocketDataProvider(
656 SSLSocketDataProvider* data) { 656 SSLSocketDataProvider* data) {
657 mock_ssl_data_.Add(data); 657 mock_ssl_data_.Add(data);
658 } 658 }
659 659
660 void MockClientSocketFactory::ResetNextMockIndexes() { 660 void MockClientSocketFactory::ResetNextMockIndexes() {
661 mock_data_.ResetNextIndex(); 661 mock_data_.ResetNextIndex();
(...skipping 26 matching lines...) Expand all
688 return socket.PassAs<StreamSocket>(); 688 return socket.PassAs<StreamSocket>();
689 } 689 }
690 690
691 scoped_ptr<SSLClientSocket> MockClientSocketFactory::CreateSSLClientSocket( 691 scoped_ptr<SSLClientSocket> MockClientSocketFactory::CreateSSLClientSocket(
692 scoped_ptr<ClientSocketHandle> transport_socket, 692 scoped_ptr<ClientSocketHandle> transport_socket,
693 const HostPortPair& host_and_port, 693 const HostPortPair& host_and_port,
694 const SSLConfig& ssl_config, 694 const SSLConfig& ssl_config,
695 const SSLClientSocketContext& context) { 695 const SSLClientSocketContext& context) {
696 return scoped_ptr<SSLClientSocket>( 696 return scoped_ptr<SSLClientSocket>(
697 new MockSSLClientSocket(transport_socket.Pass(), 697 new MockSSLClientSocket(transport_socket.Pass(),
698 host_and_port, ssl_config, 698 host_and_port,
699 ssl_config,
699 mock_ssl_data_.GetNext())); 700 mock_ssl_data_.GetNext()));
700 } 701 }
701 702
702 void MockClientSocketFactory::ClearSSLSessionCache() { 703 void MockClientSocketFactory::ClearSSLSessionCache() {
703 } 704 }
704 705
705 const char MockClientSocket::kTlsUnique[] = "MOCK_TLSUNIQ"; 706 const char MockClientSocket::kTlsUnique[] = "MOCK_TLSUNIQ";
706 707
707 MockClientSocket::MockClientSocket(const BoundNetLog& net_log) 708 MockClientSocket::MockClientSocket(const BoundNetLog& net_log)
708 : connected_(false), 709 : connected_(false), net_log_(net_log), weak_factory_(this) {
709 net_log_(net_log),
710 weak_factory_(this) {
711 IPAddressNumber ip; 710 IPAddressNumber ip;
712 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); 711 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
713 peer_addr_ = IPEndPoint(ip, 0); 712 peer_addr_ = IPEndPoint(ip, 0);
714 } 713 }
715 714
716 int MockClientSocket::SetReceiveBufferSize(int32 size) { 715 int MockClientSocket::SetReceiveBufferSize(int32 size) {
717 return OK; 716 return OK;
718 } 717 }
719 718
720 int MockClientSocket::SetSendBufferSize(int32 size) { 719 int MockClientSocket::SetSendBufferSize(int32 size) {
(...skipping 25 matching lines...) Expand all
746 CHECK(rv); 745 CHECK(rv);
747 *address = IPEndPoint(ip, 123); 746 *address = IPEndPoint(ip, 123);
748 return OK; 747 return OK;
749 } 748 }
750 749
751 const BoundNetLog& MockClientSocket::NetLog() const { 750 const BoundNetLog& MockClientSocket::NetLog() const {
752 return net_log_; 751 return net_log_;
753 } 752 }
754 753
755 void MockClientSocket::GetSSLCertRequestInfo( 754 void MockClientSocket::GetSSLCertRequestInfo(
756 SSLCertRequestInfo* cert_request_info) { 755 SSLCertRequestInfo* cert_request_info) {
757 } 756 }
758 757
759 int MockClientSocket::ExportKeyingMaterial(const base::StringPiece& label, 758 int MockClientSocket::ExportKeyingMaterial(const base::StringPiece& label,
760 bool has_context, 759 bool has_context,
761 const base::StringPiece& context, 760 const base::StringPiece& context,
762 unsigned char* out, 761 unsigned char* out,
763 unsigned int outlen) { 762 unsigned int outlen) {
764 memset(out, 'A', outlen); 763 memset(out, 'A', outlen);
765 return OK; 764 return OK;
766 } 765 }
767 766
768 int MockClientSocket::GetTLSUniqueChannelBinding(std::string* out) { 767 int MockClientSocket::GetTLSUniqueChannelBinding(std::string* out) {
769 out->assign(MockClientSocket::kTlsUnique); 768 out->assign(MockClientSocket::kTlsUnique);
770 return OK; 769 return OK;
771 } 770 }
772 771
773 ServerBoundCertService* MockClientSocket::GetServerBoundCertService() const { 772 ServerBoundCertService* MockClientSocket::GetServerBoundCertService() const {
774 NOTREACHED(); 773 NOTREACHED();
775 return NULL; 774 return NULL;
776 } 775 }
777 776
778 SSLClientSocket::NextProtoStatus 777 SSLClientSocket::NextProtoStatus MockClientSocket::GetNextProto(
779 MockClientSocket::GetNextProto(std::string* proto, std::string* server_protos) { 778 std::string* proto,
779 std::string* server_protos) {
780 proto->clear(); 780 proto->clear();
781 server_protos->clear(); 781 server_protos->clear();
782 return SSLClientSocket::kNextProtoUnsupported; 782 return SSLClientSocket::kNextProtoUnsupported;
783 } 783 }
784 784
785 scoped_refptr<X509Certificate> 785 scoped_refptr<X509Certificate>
786 MockClientSocket::GetUnverifiedServerCertificateChain() const { 786 MockClientSocket::GetUnverifiedServerCertificateChain() const {
787 NOTREACHED(); 787 NOTREACHED();
788 return NULL; 788 return NULL;
789 } 789 }
790 790
791 MockClientSocket::~MockClientSocket() {} 791 MockClientSocket::~MockClientSocket() {
792 }
792 793
793 void MockClientSocket::RunCallbackAsync(const CompletionCallback& callback, 794 void MockClientSocket::RunCallbackAsync(const CompletionCallback& callback,
794 int result) { 795 int result) {
795 base::MessageLoop::current()->PostTask( 796 base::MessageLoop::current()->PostTask(
796 FROM_HERE, 797 FROM_HERE,
797 base::Bind(&MockClientSocket::RunCallback, 798 base::Bind(&MockClientSocket::RunCallback,
798 weak_factory_.GetWeakPtr(), 799 weak_factory_.GetWeakPtr(),
799 callback, 800 callback,
800 result)); 801 result));
801 } 802 }
(...skipping 15 matching lines...) Expand all
817 need_read_data_(true), 818 need_read_data_(true),
818 peer_closed_connection_(false), 819 peer_closed_connection_(false),
819 pending_buf_(NULL), 820 pending_buf_(NULL),
820 pending_buf_len_(0), 821 pending_buf_len_(0),
821 was_used_to_convey_data_(false) { 822 was_used_to_convey_data_(false) {
822 DCHECK(data_); 823 DCHECK(data_);
823 peer_addr_ = data->connect_data().peer_addr; 824 peer_addr_ = data->connect_data().peer_addr;
824 data_->Reset(); 825 data_->Reset();
825 } 826 }
826 827
827 MockTCPClientSocket::~MockTCPClientSocket() {} 828 MockTCPClientSocket::~MockTCPClientSocket() {
829 }
828 830
829 int MockTCPClientSocket::Read(IOBuffer* buf, int buf_len, 831 int MockTCPClientSocket::Read(IOBuffer* buf,
832 int buf_len,
830 const CompletionCallback& callback) { 833 const CompletionCallback& callback) {
831 if (!connected_) 834 if (!connected_)
832 return ERR_UNEXPECTED; 835 return ERR_UNEXPECTED;
833 836
834 // If the buffer is already in use, a read is already in progress! 837 // If the buffer is already in use, a read is already in progress!
835 DCHECK(pending_buf_ == NULL); 838 DCHECK(pending_buf_ == NULL);
836 839
837 // Store our async IO data. 840 // Store our async IO data.
838 pending_buf_ = buf; 841 pending_buf_ = buf;
839 pending_buf_len_ = buf_len; 842 pending_buf_len_ = buf_len;
(...skipping 18 matching lines...) Expand all
858 // We need to be using async IO in this case. 861 // We need to be using async IO in this case.
859 DCHECK(!callback.is_null()); 862 DCHECK(!callback.is_null());
860 return ERR_IO_PENDING; 863 return ERR_IO_PENDING;
861 } 864 }
862 need_read_data_ = false; 865 need_read_data_ = false;
863 } 866 }
864 867
865 return CompleteRead(); 868 return CompleteRead();
866 } 869 }
867 870
868 int MockTCPClientSocket::Write(IOBuffer* buf, int buf_len, 871 int MockTCPClientSocket::Write(IOBuffer* buf,
872 int buf_len,
869 const CompletionCallback& callback) { 873 const CompletionCallback& callback) {
870 DCHECK(buf); 874 DCHECK(buf);
871 DCHECK_GT(buf_len, 0); 875 DCHECK_GT(buf_len, 0);
872 876
873 if (!connected_) 877 if (!connected_)
874 return ERR_UNEXPECTED; 878 return ERR_UNEXPECTED;
875 879
876 std::string data(buf->data(), buf_len); 880 std::string data(buf->data(), buf_len);
877 MockWriteResult write_result = data_->OnWrite(data); 881 MockWriteResult write_result = data_->OnWrite(data);
878 882
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 read_data_(), 1014 read_data_(),
1011 read_buf_(NULL), 1015 read_buf_(NULL),
1012 read_buf_len_(0), 1016 read_buf_len_(0),
1013 read_pending_(false), 1017 read_pending_(false),
1014 data_(data), 1018 data_(data),
1015 was_used_to_convey_data_(false), 1019 was_used_to_convey_data_(false),
1016 peer_closed_connection_(false), 1020 peer_closed_connection_(false),
1017 net_log_(BoundNetLog::Make(net_log, net::NetLog::SOURCE_NONE)) { 1021 net_log_(BoundNetLog::Make(net_log, net::NetLog::SOURCE_NONE)) {
1018 } 1022 }
1019 1023
1020 DeterministicSocketHelper::~DeterministicSocketHelper() {} 1024 DeterministicSocketHelper::~DeterministicSocketHelper() {
1025 }
1021 1026
1022 void DeterministicSocketHelper::CompleteWrite() { 1027 void DeterministicSocketHelper::CompleteWrite() {
1023 was_used_to_convey_data_ = true; 1028 was_used_to_convey_data_ = true;
1024 write_pending_ = false; 1029 write_pending_ = false;
1025 write_callback_.Run(write_result_); 1030 write_callback_.Run(write_result_);
1026 } 1031 }
1027 1032
1028 int DeterministicSocketHelper::CompleteRead() { 1033 int DeterministicSocketHelper::CompleteRead() {
1029 DCHECK_GT(read_buf_len_, 0); 1034 DCHECK_GT(read_buf_len_, 0);
1030 DCHECK_LE(read_data_.data_len, read_buf_len_); 1035 DCHECK_LE(read_data_.data_len, read_buf_len_);
(...skipping 15 matching lines...) Expand all
1046 } 1051 }
1047 1052
1048 if (read_pending_) { 1053 if (read_pending_) {
1049 read_pending_ = false; 1054 read_pending_ = false;
1050 read_callback_.Run(result); 1055 read_callback_.Run(result);
1051 } 1056 }
1052 1057
1053 return result; 1058 return result;
1054 } 1059 }
1055 1060
1056 int DeterministicSocketHelper::Write( 1061 int DeterministicSocketHelper::Write(IOBuffer* buf,
1057 IOBuffer* buf, int buf_len, const CompletionCallback& callback) { 1062 int buf_len,
1063 const CompletionCallback& callback) {
1058 DCHECK(buf); 1064 DCHECK(buf);
1059 DCHECK_GT(buf_len, 0); 1065 DCHECK_GT(buf_len, 0);
1060 1066
1061 std::string data(buf->data(), buf_len); 1067 std::string data(buf->data(), buf_len);
1062 MockWriteResult write_result = data_->OnWrite(data); 1068 MockWriteResult write_result = data_->OnWrite(data);
1063 1069
1064 if (write_result.mode == ASYNC) { 1070 if (write_result.mode == ASYNC) {
1065 write_callback_ = callback; 1071 write_callback_ = callback;
1066 write_result_ = write_result.result; 1072 write_result_ = write_result.result;
1067 DCHECK(!write_callback_.is_null()); 1073 DCHECK(!write_callback_.is_null());
1068 write_pending_ = true; 1074 write_pending_ = true;
1069 return ERR_IO_PENDING; 1075 return ERR_IO_PENDING;
1070 } 1076 }
1071 1077
1072 was_used_to_convey_data_ = true; 1078 was_used_to_convey_data_ = true;
1073 write_pending_ = false; 1079 write_pending_ = false;
1074 return write_result.result; 1080 return write_result.result;
1075 } 1081 }
1076 1082
1077 int DeterministicSocketHelper::Read( 1083 int DeterministicSocketHelper::Read(IOBuffer* buf,
1078 IOBuffer* buf, int buf_len, const CompletionCallback& callback) { 1084 int buf_len,
1079 1085 const CompletionCallback& callback) {
1080 read_data_ = data_->GetNextRead(); 1086 read_data_ = data_->GetNextRead();
1081 // The buffer should always be big enough to contain all the MockRead data. To 1087 // The buffer should always be big enough to contain all the MockRead data. To
1082 // use small buffers, split the data into multiple MockReads. 1088 // use small buffers, split the data into multiple MockReads.
1083 DCHECK_LE(read_data_.data_len, buf_len); 1089 DCHECK_LE(read_data_.data_len, buf_len);
1084 1090
1085 if (read_data_.result == ERR_CONNECTION_CLOSED) { 1091 if (read_data_.result == ERR_CONNECTION_CLOSED) {
1086 // This MockRead is just a marker to instruct us to set 1092 // This MockRead is just a marker to instruct us to set
1087 // peer_closed_connection_. 1093 // peer_closed_connection_.
1088 peer_closed_connection_ = true; 1094 peer_closed_connection_ = true;
1089 } 1095 }
(...skipping 14 matching lines...) Expand all
1104 return ERR_IO_PENDING; 1110 return ERR_IO_PENDING;
1105 } 1111 }
1106 1112
1107 was_used_to_convey_data_ = true; 1113 was_used_to_convey_data_ = true;
1108 return CompleteRead(); 1114 return CompleteRead();
1109 } 1115 }
1110 1116
1111 DeterministicMockUDPClientSocket::DeterministicMockUDPClientSocket( 1117 DeterministicMockUDPClientSocket::DeterministicMockUDPClientSocket(
1112 net::NetLog* net_log, 1118 net::NetLog* net_log,
1113 DeterministicSocketData* data) 1119 DeterministicSocketData* data)
1114 : connected_(false), 1120 : connected_(false), helper_(net_log, data), source_port_(123) {
1115 helper_(net_log, data),
1116 source_port_(123) {
1117 } 1121 }
1118 1122
1119 DeterministicMockUDPClientSocket::~DeterministicMockUDPClientSocket() {} 1123 DeterministicMockUDPClientSocket::~DeterministicMockUDPClientSocket() {
1124 }
1120 1125
1121 bool DeterministicMockUDPClientSocket::WritePending() const { 1126 bool DeterministicMockUDPClientSocket::WritePending() const {
1122 return helper_.write_pending(); 1127 return helper_.write_pending();
1123 } 1128 }
1124 1129
1125 bool DeterministicMockUDPClientSocket::ReadPending() const { 1130 bool DeterministicMockUDPClientSocket::ReadPending() const {
1126 return helper_.read_pending(); 1131 return helper_.read_pending();
1127 } 1132 }
1128 1133
1129 void DeterministicMockUDPClientSocket::CompleteWrite() { 1134 void DeterministicMockUDPClientSocket::CompleteWrite() {
(...skipping 15 matching lines...) Expand all
1145 int DeterministicMockUDPClientSocket::Write( 1150 int DeterministicMockUDPClientSocket::Write(
1146 IOBuffer* buf, 1151 IOBuffer* buf,
1147 int buf_len, 1152 int buf_len,
1148 const CompletionCallback& callback) { 1153 const CompletionCallback& callback) {
1149 if (!connected_) 1154 if (!connected_)
1150 return ERR_UNEXPECTED; 1155 return ERR_UNEXPECTED;
1151 1156
1152 return helper_.Write(buf, buf_len, callback); 1157 return helper_.Write(buf, buf_len, callback);
1153 } 1158 }
1154 1159
1155 int DeterministicMockUDPClientSocket::Read( 1160 int DeterministicMockUDPClientSocket::Read(IOBuffer* buf,
1156 IOBuffer* buf, 1161 int buf_len,
1157 int buf_len, 1162 const CompletionCallback& callback) {
1158 const CompletionCallback& callback) {
1159 if (!connected_) 1163 if (!connected_)
1160 return ERR_UNEXPECTED; 1164 return ERR_UNEXPECTED;
1161 1165
1162 return helper_.Read(buf, buf_len, callback); 1166 return helper_.Read(buf, buf_len, callback);
1163 } 1167 }
1164 1168
1165 int DeterministicMockUDPClientSocket::SetReceiveBufferSize(int32 size) { 1169 int DeterministicMockUDPClientSocket::SetReceiveBufferSize(int32 size) {
1166 return OK; 1170 return OK;
1167 } 1171 }
1168 1172
(...skipping 17 matching lines...) Expand all
1186 bool rv = ParseIPLiteralToNumber("192.0.2.33", &ip); 1190 bool rv = ParseIPLiteralToNumber("192.0.2.33", &ip);
1187 CHECK(rv); 1191 CHECK(rv);
1188 *address = IPEndPoint(ip, source_port_); 1192 *address = IPEndPoint(ip, source_port_);
1189 return OK; 1193 return OK;
1190 } 1194 }
1191 1195
1192 const BoundNetLog& DeterministicMockUDPClientSocket::NetLog() const { 1196 const BoundNetLog& DeterministicMockUDPClientSocket::NetLog() const {
1193 return helper_.net_log(); 1197 return helper_.net_log();
1194 } 1198 }
1195 1199
1196 void DeterministicMockUDPClientSocket::OnReadComplete(const MockRead& data) {} 1200 void DeterministicMockUDPClientSocket::OnReadComplete(const MockRead& data) {
1201 }
1197 1202
1198 void DeterministicMockUDPClientSocket::OnConnectComplete( 1203 void DeterministicMockUDPClientSocket::OnConnectComplete(
1199 const MockConnect& data) { 1204 const MockConnect& data) {
1200 NOTIMPLEMENTED(); 1205 NOTIMPLEMENTED();
1201 } 1206 }
1202 1207
1203 DeterministicMockTCPClientSocket::DeterministicMockTCPClientSocket( 1208 DeterministicMockTCPClientSocket::DeterministicMockTCPClientSocket(
1204 net::NetLog* net_log, 1209 net::NetLog* net_log,
1205 DeterministicSocketData* data) 1210 DeterministicSocketData* data)
1206 : MockClientSocket(BoundNetLog::Make(net_log, net::NetLog::SOURCE_NONE)), 1211 : MockClientSocket(BoundNetLog::Make(net_log, net::NetLog::SOURCE_NONE)),
1207 helper_(net_log, data) { 1212 helper_(net_log, data) {
1208 peer_addr_ = data->connect_data().peer_addr; 1213 peer_addr_ = data->connect_data().peer_addr;
1209 } 1214 }
1210 1215
1211 DeterministicMockTCPClientSocket::~DeterministicMockTCPClientSocket() {} 1216 DeterministicMockTCPClientSocket::~DeterministicMockTCPClientSocket() {
1217 }
1212 1218
1213 bool DeterministicMockTCPClientSocket::WritePending() const { 1219 bool DeterministicMockTCPClientSocket::WritePending() const {
1214 return helper_.write_pending(); 1220 return helper_.write_pending();
1215 } 1221 }
1216 1222
1217 bool DeterministicMockTCPClientSocket::ReadPending() const { 1223 bool DeterministicMockTCPClientSocket::ReadPending() const {
1218 return helper_.read_pending(); 1224 return helper_.read_pending();
1219 } 1225 }
1220 1226
1221 void DeterministicMockTCPClientSocket::CompleteWrite() { 1227 void DeterministicMockTCPClientSocket::CompleteWrite() {
1222 helper_.CompleteWrite(); 1228 helper_.CompleteWrite();
1223 } 1229 }
1224 1230
1225 int DeterministicMockTCPClientSocket::CompleteRead() { 1231 int DeterministicMockTCPClientSocket::CompleteRead() {
1226 return helper_.CompleteRead(); 1232 return helper_.CompleteRead();
1227 } 1233 }
1228 1234
1229 int DeterministicMockTCPClientSocket::Write( 1235 int DeterministicMockTCPClientSocket::Write(
1230 IOBuffer* buf, 1236 IOBuffer* buf,
1231 int buf_len, 1237 int buf_len,
1232 const CompletionCallback& callback) { 1238 const CompletionCallback& callback) {
1233 if (!connected_) 1239 if (!connected_)
1234 return ERR_UNEXPECTED; 1240 return ERR_UNEXPECTED;
1235 1241
1236 return helper_.Write(buf, buf_len, callback); 1242 return helper_.Write(buf, buf_len, callback);
1237 } 1243 }
1238 1244
1239 int DeterministicMockTCPClientSocket::Read( 1245 int DeterministicMockTCPClientSocket::Read(IOBuffer* buf,
1240 IOBuffer* buf, 1246 int buf_len,
1241 int buf_len, 1247 const CompletionCallback& callback) {
1242 const CompletionCallback& callback) {
1243 if (!connected_) 1248 if (!connected_)
1244 return ERR_UNEXPECTED; 1249 return ERR_UNEXPECTED;
1245 1250
1246 return helper_.Read(buf, buf_len, callback); 1251 return helper_.Read(buf, buf_len, callback);
1247 } 1252 }
1248 1253
1249 // TODO(erikchen): Support connect sequencing. 1254 // TODO(erikchen): Support connect sequencing.
1250 int DeterministicMockTCPClientSocket::Connect( 1255 int DeterministicMockTCPClientSocket::Connect(
1251 const CompletionCallback& callback) { 1256 const CompletionCallback& callback) {
1252 if (connected_) 1257 if (connected_)
(...skipping 27 matching lines...) Expand all
1280 } 1285 }
1281 1286
1282 bool DeterministicMockTCPClientSocket::WasNpnNegotiated() const { 1287 bool DeterministicMockTCPClientSocket::WasNpnNegotiated() const {
1283 return false; 1288 return false;
1284 } 1289 }
1285 1290
1286 bool DeterministicMockTCPClientSocket::GetSSLInfo(SSLInfo* ssl_info) { 1291 bool DeterministicMockTCPClientSocket::GetSSLInfo(SSLInfo* ssl_info) {
1287 return false; 1292 return false;
1288 } 1293 }
1289 1294
1290 void DeterministicMockTCPClientSocket::OnReadComplete(const MockRead& data) {} 1295 void DeterministicMockTCPClientSocket::OnReadComplete(const MockRead& data) {
1296 }
1291 1297
1292 void DeterministicMockTCPClientSocket::OnConnectComplete( 1298 void DeterministicMockTCPClientSocket::OnConnectComplete(
1293 const MockConnect& data) {} 1299 const MockConnect& data) {
1300 }
1294 1301
1295 // static 1302 // static
1296 void MockSSLClientSocket::ConnectCallback( 1303 void MockSSLClientSocket::ConnectCallback(
1297 MockSSLClientSocket* ssl_client_socket, 1304 MockSSLClientSocket* ssl_client_socket,
1298 const CompletionCallback& callback, 1305 const CompletionCallback& callback,
1299 int rv) { 1306 int rv) {
1300 if (rv == OK) 1307 if (rv == OK)
1301 ssl_client_socket->connected_ = true; 1308 ssl_client_socket->connected_ = true;
1302 callback.Run(rv); 1309 callback.Run(rv);
1303 } 1310 }
1304 1311
1305 MockSSLClientSocket::MockSSLClientSocket( 1312 MockSSLClientSocket::MockSSLClientSocket(
1306 scoped_ptr<ClientSocketHandle> transport_socket, 1313 scoped_ptr<ClientSocketHandle> transport_socket,
1307 const HostPortPair& host_port_pair, 1314 const HostPortPair& host_port_pair,
1308 const SSLConfig& ssl_config, 1315 const SSLConfig& ssl_config,
1309 SSLSocketDataProvider* data) 1316 SSLSocketDataProvider* data)
1310 : MockClientSocket( 1317 : MockClientSocket(
1311 // Have to use the right BoundNetLog for LoadTimingInfo regression 1318 // Have to use the right BoundNetLog for LoadTimingInfo regression
1312 // tests. 1319 // tests.
1313 transport_socket->socket()->NetLog()), 1320 transport_socket->socket()->NetLog()),
1314 transport_(transport_socket.Pass()), 1321 transport_(transport_socket.Pass()),
1315 data_(data), 1322 data_(data),
1316 is_npn_state_set_(false), 1323 is_npn_state_set_(false),
1317 new_npn_value_(false), 1324 new_npn_value_(false),
1318 is_protocol_negotiated_set_(false), 1325 is_protocol_negotiated_set_(false),
1319 protocol_negotiated_(kProtoUnknown) { 1326 protocol_negotiated_(kProtoUnknown) {
1320 DCHECK(data_); 1327 DCHECK(data_);
1321 peer_addr_ = data->connect.peer_addr; 1328 peer_addr_ = data->connect.peer_addr;
1322 } 1329 }
1323 1330
1324 MockSSLClientSocket::~MockSSLClientSocket() { 1331 MockSSLClientSocket::~MockSSLClientSocket() {
1325 Disconnect(); 1332 Disconnect();
1326 } 1333 }
1327 1334
1328 int MockSSLClientSocket::Read(IOBuffer* buf, int buf_len, 1335 int MockSSLClientSocket::Read(IOBuffer* buf,
1336 int buf_len,
1329 const CompletionCallback& callback) { 1337 const CompletionCallback& callback) {
1330 return transport_->socket()->Read(buf, buf_len, callback); 1338 return transport_->socket()->Read(buf, buf_len, callback);
1331 } 1339 }
1332 1340
1333 int MockSSLClientSocket::Write(IOBuffer* buf, int buf_len, 1341 int MockSSLClientSocket::Write(IOBuffer* buf,
1342 int buf_len,
1334 const CompletionCallback& callback) { 1343 const CompletionCallback& callback) {
1335 return transport_->socket()->Write(buf, buf_len, callback); 1344 return transport_->socket()->Write(buf, buf_len, callback);
1336 } 1345 }
1337 1346
1338 int MockSSLClientSocket::Connect(const CompletionCallback& callback) { 1347 int MockSSLClientSocket::Connect(const CompletionCallback& callback) {
1339 int rv = transport_->socket()->Connect( 1348 int rv = transport_->socket()->Connect(
1340 base::Bind(&ConnectCallback, base::Unretained(this), callback)); 1349 base::Bind(&ConnectCallback, base::Unretained(this), callback));
1341 if (rv == OK) { 1350 if (rv == OK) {
1342 if (data_->connect.result == OK) 1351 if (data_->connect.result == OK)
1343 connected_ = true; 1352 connected_ = true;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 ssl_info->cert = data_->cert; 1386 ssl_info->cert = data_->cert;
1378 ssl_info->client_cert_sent = data_->client_cert_sent; 1387 ssl_info->client_cert_sent = data_->client_cert_sent;
1379 ssl_info->channel_id_sent = data_->channel_id_sent; 1388 ssl_info->channel_id_sent = data_->channel_id_sent;
1380 return true; 1389 return true;
1381 } 1390 }
1382 1391
1383 void MockSSLClientSocket::GetSSLCertRequestInfo( 1392 void MockSSLClientSocket::GetSSLCertRequestInfo(
1384 SSLCertRequestInfo* cert_request_info) { 1393 SSLCertRequestInfo* cert_request_info) {
1385 DCHECK(cert_request_info); 1394 DCHECK(cert_request_info);
1386 if (data_->cert_request_info) { 1395 if (data_->cert_request_info) {
1387 cert_request_info->host_and_port = 1396 cert_request_info->host_and_port = data_->cert_request_info->host_and_port;
1388 data_->cert_request_info->host_and_port;
1389 cert_request_info->client_certs = data_->cert_request_info->client_certs; 1397 cert_request_info->client_certs = data_->cert_request_info->client_certs;
1390 } else { 1398 } else {
1391 cert_request_info->Reset(); 1399 cert_request_info->Reset();
1392 } 1400 }
1393 } 1401 }
1394 1402
1395 SSLClientSocket::NextProtoStatus MockSSLClientSocket::GetNextProto( 1403 SSLClientSocket::NextProtoStatus MockSSLClientSocket::GetNextProto(
1396 std::string* proto, std::string* server_protos) { 1404 std::string* proto,
1405 std::string* server_protos) {
1397 *proto = data_->next_proto; 1406 *proto = data_->next_proto;
1398 *server_protos = data_->server_protos; 1407 *server_protos = data_->server_protos;
1399 return data_->next_proto_status; 1408 return data_->next_proto_status;
1400 } 1409 }
1401 1410
1402 bool MockSSLClientSocket::set_was_npn_negotiated(bool negotiated) { 1411 bool MockSSLClientSocket::set_was_npn_negotiated(bool negotiated) {
1403 is_npn_state_set_ = true; 1412 is_npn_state_set_ = true;
1404 return new_npn_value_ = negotiated; 1413 return new_npn_value_ = negotiated;
1405 } 1414 }
1406 1415
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1452 source_port_(123), 1461 source_port_(123),
1453 pending_buf_(NULL), 1462 pending_buf_(NULL),
1454 pending_buf_len_(0), 1463 pending_buf_len_(0),
1455 net_log_(BoundNetLog::Make(net_log, net::NetLog::SOURCE_NONE)), 1464 net_log_(BoundNetLog::Make(net_log, net::NetLog::SOURCE_NONE)),
1456 weak_factory_(this) { 1465 weak_factory_(this) {
1457 DCHECK(data_); 1466 DCHECK(data_);
1458 data_->Reset(); 1467 data_->Reset();
1459 peer_addr_ = data->connect_data().peer_addr; 1468 peer_addr_ = data->connect_data().peer_addr;
1460 } 1469 }
1461 1470
1462 MockUDPClientSocket::~MockUDPClientSocket() {} 1471 MockUDPClientSocket::~MockUDPClientSocket() {
1472 }
1463 1473
1464 int MockUDPClientSocket::Read(IOBuffer* buf, 1474 int MockUDPClientSocket::Read(IOBuffer* buf,
1465 int buf_len, 1475 int buf_len,
1466 const CompletionCallback& callback) { 1476 const CompletionCallback& callback) {
1467 if (!connected_) 1477 if (!connected_)
1468 return ERR_UNEXPECTED; 1478 return ERR_UNEXPECTED;
1469 1479
1470 // If the buffer is already in use, a read is already in progress! 1480 // If the buffer is already in use, a read is already in progress!
1471 DCHECK(pending_buf_ == NULL); 1481 DCHECK(pending_buf_ == NULL);
1472 1482
(...skipping 10 matching lines...) Expand all
1483 // We need to be using async IO in this case. 1493 // We need to be using async IO in this case.
1484 DCHECK(!callback.is_null()); 1494 DCHECK(!callback.is_null());
1485 return ERR_IO_PENDING; 1495 return ERR_IO_PENDING;
1486 } 1496 }
1487 need_read_data_ = false; 1497 need_read_data_ = false;
1488 } 1498 }
1489 1499
1490 return CompleteRead(); 1500 return CompleteRead();
1491 } 1501 }
1492 1502
1493 int MockUDPClientSocket::Write(IOBuffer* buf, int buf_len, 1503 int MockUDPClientSocket::Write(IOBuffer* buf,
1504 int buf_len,
1494 const CompletionCallback& callback) { 1505 const CompletionCallback& callback) {
1495 DCHECK(buf); 1506 DCHECK(buf);
1496 DCHECK_GT(buf_len, 0); 1507 DCHECK_GT(buf_len, 0);
1497 1508
1498 if (!connected_) 1509 if (!connected_)
1499 return ERR_UNEXPECTED; 1510 return ERR_UNEXPECTED;
1500 1511
1501 std::string data(buf->data(), buf_len); 1512 std::string data(buf->data(), buf_len);
1502 MockWriteResult write_result = data_->OnWrite(data); 1513 MockWriteResult write_result = data_->OnWrite(data);
1503 1514
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 result)); 1625 result));
1615 } 1626 }
1616 1627
1617 void MockUDPClientSocket::RunCallback(const CompletionCallback& callback, 1628 void MockUDPClientSocket::RunCallback(const CompletionCallback& callback,
1618 int result) { 1629 int result) {
1619 if (!callback.is_null()) 1630 if (!callback.is_null())
1620 callback.Run(result); 1631 callback.Run(result);
1621 } 1632 }
1622 1633
1623 TestSocketRequest::TestSocketRequest( 1634 TestSocketRequest::TestSocketRequest(
1624 std::vector<TestSocketRequest*>* request_order, size_t* completion_count) 1635 std::vector<TestSocketRequest*>* request_order,
1636 size_t* completion_count)
1625 : request_order_(request_order), 1637 : request_order_(request_order),
1626 completion_count_(completion_count), 1638 completion_count_(completion_count),
1627 callback_(base::Bind(&TestSocketRequest::OnComplete, 1639 callback_(
1628 base::Unretained(this))) { 1640 base::Bind(&TestSocketRequest::OnComplete, base::Unretained(this))) {
1629 DCHECK(request_order); 1641 DCHECK(request_order);
1630 DCHECK(completion_count); 1642 DCHECK(completion_count);
1631 } 1643 }
1632 1644
1633 TestSocketRequest::~TestSocketRequest() { 1645 TestSocketRequest::~TestSocketRequest() {
1634 } 1646 }
1635 1647
1636 void TestSocketRequest::OnComplete(int result) { 1648 void TestSocketRequest::OnComplete(int result) {
1637 SetResult(result); 1649 SetResult(result);
1638 (*completion_count_)++; 1650 (*completion_count_)++;
1639 request_order_->push_back(this); 1651 request_order_->push_back(this);
1640 } 1652 }
1641 1653
1642 // static 1654 // static
1643 const int ClientSocketPoolTest::kIndexOutOfBounds = -1; 1655 const int ClientSocketPoolTest::kIndexOutOfBounds = -1;
1644 1656
1645 // static 1657 // static
1646 const int ClientSocketPoolTest::kRequestNotFound = -2; 1658 const int ClientSocketPoolTest::kRequestNotFound = -2;
1647 1659
1648 ClientSocketPoolTest::ClientSocketPoolTest() : completion_count_(0) {} 1660 ClientSocketPoolTest::ClientSocketPoolTest() : completion_count_(0) {
1649 ClientSocketPoolTest::~ClientSocketPoolTest() {} 1661 }
1662 ClientSocketPoolTest::~ClientSocketPoolTest() {
1663 }
1650 1664
1651 int ClientSocketPoolTest::GetOrderOfRequest(size_t index) const { 1665 int ClientSocketPoolTest::GetOrderOfRequest(size_t index) const {
1652 index--; 1666 index--;
1653 if (index >= requests_.size()) 1667 if (index >= requests_.size())
1654 return kIndexOutOfBounds; 1668 return kIndexOutOfBounds;
1655 1669
1656 for (size_t i = 0; i < request_order_.size(); i++) 1670 for (size_t i = 0; i < request_order_.size(); i++)
1657 if (requests_[index] == request_order_[i]) 1671 if (requests_[index] == request_order_[i])
1658 return i + 1; 1672 return i + 1;
1659 1673
(...skipping 18 matching lines...) Expand all
1678 bool released_one; 1692 bool released_one;
1679 do { 1693 do {
1680 released_one = ReleaseOneConnection(keep_alive); 1694 released_one = ReleaseOneConnection(keep_alive);
1681 } while (released_one); 1695 } while (released_one);
1682 } 1696 }
1683 1697
1684 MockTransportClientSocketPool::MockConnectJob::MockConnectJob( 1698 MockTransportClientSocketPool::MockConnectJob::MockConnectJob(
1685 scoped_ptr<StreamSocket> socket, 1699 scoped_ptr<StreamSocket> socket,
1686 ClientSocketHandle* handle, 1700 ClientSocketHandle* handle,
1687 const CompletionCallback& callback) 1701 const CompletionCallback& callback)
1688 : socket_(socket.Pass()), 1702 : socket_(socket.Pass()), handle_(handle), user_callback_(callback) {
1689 handle_(handle),
1690 user_callback_(callback) {
1691 } 1703 }
1692 1704
1693 MockTransportClientSocketPool::MockConnectJob::~MockConnectJob() {} 1705 MockTransportClientSocketPool::MockConnectJob::~MockConnectJob() {
1706 }
1694 1707
1695 int MockTransportClientSocketPool::MockConnectJob::Connect() { 1708 int MockTransportClientSocketPool::MockConnectJob::Connect() {
1696 int rv = socket_->Connect(base::Bind(&MockConnectJob::OnConnect, 1709 int rv = socket_->Connect(
1697 base::Unretained(this))); 1710 base::Bind(&MockConnectJob::OnConnect, base::Unretained(this)));
1698 if (rv == OK) { 1711 if (rv == OK) {
1699 user_callback_.Reset(); 1712 user_callback_.Reset();
1700 OnConnect(OK); 1713 OnConnect(OK);
1701 } 1714 }
1702 return rv; 1715 return rv;
1703 } 1716 }
1704 1717
1705 bool MockTransportClientSocketPool::MockConnectJob::CancelHandle( 1718 bool MockTransportClientSocketPool::MockConnectJob::CancelHandle(
1706 const ClientSocketHandle* handle) { 1719 const ClientSocketHandle* handle) {
1707 if (handle != handle_) 1720 if (handle != handle_)
(...skipping 30 matching lines...) Expand all
1738 user_callback_.Reset(); 1751 user_callback_.Reset();
1739 callback.Run(rv); 1752 callback.Run(rv);
1740 } 1753 }
1741 } 1754 }
1742 1755
1743 MockTransportClientSocketPool::MockTransportClientSocketPool( 1756 MockTransportClientSocketPool::MockTransportClientSocketPool(
1744 int max_sockets, 1757 int max_sockets,
1745 int max_sockets_per_group, 1758 int max_sockets_per_group,
1746 ClientSocketPoolHistograms* histograms, 1759 ClientSocketPoolHistograms* histograms,
1747 ClientSocketFactory* socket_factory) 1760 ClientSocketFactory* socket_factory)
1748 : TransportClientSocketPool(max_sockets, max_sockets_per_group, histograms, 1761 : TransportClientSocketPool(max_sockets,
1749 NULL, NULL, NULL), 1762 max_sockets_per_group,
1763 histograms,
1764 NULL,
1765 NULL,
1766 NULL),
1750 client_socket_factory_(socket_factory), 1767 client_socket_factory_(socket_factory),
1751 last_request_priority_(DEFAULT_PRIORITY), 1768 last_request_priority_(DEFAULT_PRIORITY),
1752 release_count_(0), 1769 release_count_(0),
1753 cancel_count_(0) { 1770 cancel_count_(0) {
1754 } 1771 }
1755 1772
1756 MockTransportClientSocketPool::~MockTransportClientSocketPool() {} 1773 MockTransportClientSocketPool::~MockTransportClientSocketPool() {
1774 }
1757 1775
1758 int MockTransportClientSocketPool::RequestSocket( 1776 int MockTransportClientSocketPool::RequestSocket(
1759 const std::string& group_name, const void* socket_params, 1777 const std::string& group_name,
1760 RequestPriority priority, ClientSocketHandle* handle, 1778 const void* socket_params,
1761 const CompletionCallback& callback, const BoundNetLog& net_log) { 1779 RequestPriority priority,
1780 ClientSocketHandle* handle,
1781 const CompletionCallback& callback,
1782 const BoundNetLog& net_log) {
1762 last_request_priority_ = priority; 1783 last_request_priority_ = priority;
1763 scoped_ptr<StreamSocket> socket = 1784 scoped_ptr<StreamSocket> socket =
1764 client_socket_factory_->CreateTransportClientSocket( 1785 client_socket_factory_->CreateTransportClientSocket(
1765 AddressList(), net_log.net_log(), net::NetLog::Source()); 1786 AddressList(), net_log.net_log(), net::NetLog::Source());
1766 MockConnectJob* job = new MockConnectJob(socket.Pass(), handle, callback); 1787 MockConnectJob* job = new MockConnectJob(socket.Pass(), handle, callback);
1767 job_list_.push_back(job); 1788 job_list_.push_back(job);
1768 handle->set_pool_id(1); 1789 handle->set_pool_id(1);
1769 return job->Connect(); 1790 return job->Connect();
1770 } 1791 }
1771 1792
1772 void MockTransportClientSocketPool::CancelRequest(const std::string& group_name, 1793 void MockTransportClientSocketPool::CancelRequest(const std::string& group_name,
1773 ClientSocketHandle* handle) { 1794 ClientSocketHandle* handle) {
1774 std::vector<MockConnectJob*>::iterator i; 1795 std::vector<MockConnectJob*>::iterator i;
1775 for (i = job_list_.begin(); i != job_list_.end(); ++i) { 1796 for (i = job_list_.begin(); i != job_list_.end(); ++i) {
1776 if ((*i)->CancelHandle(handle)) { 1797 if ((*i)->CancelHandle(handle)) {
1777 cancel_count_++; 1798 cancel_count_++;
1778 break; 1799 break;
1779 } 1800 }
1780 } 1801 }
1781 } 1802 }
1782 1803
1783 void MockTransportClientSocketPool::ReleaseSocket( 1804 void MockTransportClientSocketPool::ReleaseSocket(
1784 const std::string& group_name, 1805 const std::string& group_name,
1785 scoped_ptr<StreamSocket> socket, 1806 scoped_ptr<StreamSocket> socket,
1786 int id) { 1807 int id) {
1787 EXPECT_EQ(1, id); 1808 EXPECT_EQ(1, id);
1788 release_count_++; 1809 release_count_++;
1789 } 1810 }
1790 1811
1791 DeterministicMockClientSocketFactory::DeterministicMockClientSocketFactory() {} 1812 DeterministicMockClientSocketFactory::DeterministicMockClientSocketFactory() {
1813 }
1792 1814
1793 DeterministicMockClientSocketFactory::~DeterministicMockClientSocketFactory() {} 1815 DeterministicMockClientSocketFactory::~DeterministicMockClientSocketFactory() {
1816 }
1794 1817
1795 void DeterministicMockClientSocketFactory::AddSocketDataProvider( 1818 void DeterministicMockClientSocketFactory::AddSocketDataProvider(
1796 DeterministicSocketData* data) { 1819 DeterministicSocketData* data) {
1797 mock_data_.Add(data); 1820 mock_data_.Add(data);
1798 } 1821 }
1799 1822
1800 void DeterministicMockClientSocketFactory::AddSSLSocketDataProvider( 1823 void DeterministicMockClientSocketFactory::AddSSLSocketDataProvider(
1801 SSLSocketDataProvider* data) { 1824 SSLSocketDataProvider* data) {
1802 mock_ssl_data_.Add(data); 1825 mock_ssl_data_.Add(data);
1803 } 1826 }
1804 1827
1805 void DeterministicMockClientSocketFactory::ResetNextMockIndexes() { 1828 void DeterministicMockClientSocketFactory::ResetNextMockIndexes() {
1806 mock_data_.ResetNextIndex(); 1829 mock_data_.ResetNextIndex();
1807 mock_ssl_data_.ResetNextIndex(); 1830 mock_ssl_data_.ResetNextIndex();
1808 } 1831 }
1809 1832
1810 MockSSLClientSocket* DeterministicMockClientSocketFactory:: 1833 MockSSLClientSocket*
1811 GetMockSSLClientSocket(size_t index) const { 1834 DeterministicMockClientSocketFactory::GetMockSSLClientSocket(
1835 size_t index) const {
1812 DCHECK_LT(index, ssl_client_sockets_.size()); 1836 DCHECK_LT(index, ssl_client_sockets_.size());
1813 return ssl_client_sockets_[index]; 1837 return ssl_client_sockets_[index];
1814 } 1838 }
1815 1839
1816 scoped_ptr<DatagramClientSocket> 1840 scoped_ptr<DatagramClientSocket>
1817 DeterministicMockClientSocketFactory::CreateDatagramClientSocket( 1841 DeterministicMockClientSocketFactory::CreateDatagramClientSocket(
1818 DatagramSocket::BindType bind_type, 1842 DatagramSocket::BindType bind_type,
1819 const RandIntCallback& rand_int_cb, 1843 const RandIntCallback& rand_int_cb,
1820 net::NetLog* net_log, 1844 net::NetLog* net_log,
1821 const NetLog::Source& source) { 1845 const NetLog::Source& source) {
(...skipping 21 matching lines...) Expand all
1843 } 1867 }
1844 1868
1845 scoped_ptr<SSLClientSocket> 1869 scoped_ptr<SSLClientSocket>
1846 DeterministicMockClientSocketFactory::CreateSSLClientSocket( 1870 DeterministicMockClientSocketFactory::CreateSSLClientSocket(
1847 scoped_ptr<ClientSocketHandle> transport_socket, 1871 scoped_ptr<ClientSocketHandle> transport_socket,
1848 const HostPortPair& host_and_port, 1872 const HostPortPair& host_and_port,
1849 const SSLConfig& ssl_config, 1873 const SSLConfig& ssl_config,
1850 const SSLClientSocketContext& context) { 1874 const SSLClientSocketContext& context) {
1851 scoped_ptr<MockSSLClientSocket> socket( 1875 scoped_ptr<MockSSLClientSocket> socket(
1852 new MockSSLClientSocket(transport_socket.Pass(), 1876 new MockSSLClientSocket(transport_socket.Pass(),
1853 host_and_port, ssl_config, 1877 host_and_port,
1878 ssl_config,
1854 mock_ssl_data_.GetNext())); 1879 mock_ssl_data_.GetNext()));
1855 ssl_client_sockets_.push_back(socket.get()); 1880 ssl_client_sockets_.push_back(socket.get());
1856 return socket.PassAs<SSLClientSocket>(); 1881 return socket.PassAs<SSLClientSocket>();
1857 } 1882 }
1858 1883
1859 void DeterministicMockClientSocketFactory::ClearSSLSessionCache() { 1884 void DeterministicMockClientSocketFactory::ClearSSLSessionCache() {
1860 } 1885 }
1861 1886
1862 MockSOCKSClientSocketPool::MockSOCKSClientSocketPool( 1887 MockSOCKSClientSocketPool::MockSOCKSClientSocketPool(
1863 int max_sockets, 1888 int max_sockets,
1864 int max_sockets_per_group, 1889 int max_sockets_per_group,
1865 ClientSocketPoolHistograms* histograms, 1890 ClientSocketPoolHistograms* histograms,
1866 TransportClientSocketPool* transport_pool) 1891 TransportClientSocketPool* transport_pool)
1867 : SOCKSClientSocketPool(max_sockets, max_sockets_per_group, histograms, 1892 : SOCKSClientSocketPool(max_sockets,
1868 NULL, transport_pool, NULL), 1893 max_sockets_per_group,
1894 histograms,
1895 NULL,
1896 transport_pool,
1897 NULL),
1869 transport_pool_(transport_pool) { 1898 transport_pool_(transport_pool) {
1870 } 1899 }
1871 1900
1872 MockSOCKSClientSocketPool::~MockSOCKSClientSocketPool() {} 1901 MockSOCKSClientSocketPool::~MockSOCKSClientSocketPool() {
1902 }
1873 1903
1874 int MockSOCKSClientSocketPool::RequestSocket( 1904 int MockSOCKSClientSocketPool::RequestSocket(const std::string& group_name,
1875 const std::string& group_name, const void* socket_params, 1905 const void* socket_params,
1876 RequestPriority priority, ClientSocketHandle* handle, 1906 RequestPriority priority,
1877 const CompletionCallback& callback, const BoundNetLog& net_log) { 1907 ClientSocketHandle* handle,
1908 const CompletionCallback& callback,
1909 const BoundNetLog& net_log) {
1878 return transport_pool_->RequestSocket( 1910 return transport_pool_->RequestSocket(
1879 group_name, socket_params, priority, handle, callback, net_log); 1911 group_name, socket_params, priority, handle, callback, net_log);
1880 } 1912 }
1881 1913
1882 void MockSOCKSClientSocketPool::CancelRequest( 1914 void MockSOCKSClientSocketPool::CancelRequest(const std::string& group_name,
1883 const std::string& group_name, 1915 ClientSocketHandle* handle) {
1884 ClientSocketHandle* handle) {
1885 return transport_pool_->CancelRequest(group_name, handle); 1916 return transport_pool_->CancelRequest(group_name, handle);
1886 } 1917 }
1887 1918
1888 void MockSOCKSClientSocketPool::ReleaseSocket(const std::string& group_name, 1919 void MockSOCKSClientSocketPool::ReleaseSocket(const std::string& group_name,
1889 scoped_ptr<StreamSocket> socket, 1920 scoped_ptr<StreamSocket> socket,
1890 int id) { 1921 int id) {
1891 return transport_pool_->ReleaseSocket(group_name, socket.Pass(), id); 1922 return transport_pool_->ReleaseSocket(group_name, socket.Pass(), id);
1892 } 1923 }
1893 1924
1894 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; 1925 const char kSOCKS5GreetRequest[] = {0x05, 0x01, 0x00};
1895 const int kSOCKS5GreetRequestLength = arraysize(kSOCKS5GreetRequest); 1926 const int kSOCKS5GreetRequestLength = arraysize(kSOCKS5GreetRequest);
1896 1927
1897 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; 1928 const char kSOCKS5GreetResponse[] = {0x05, 0x00};
1898 const int kSOCKS5GreetResponseLength = arraysize(kSOCKS5GreetResponse); 1929 const int kSOCKS5GreetResponseLength = arraysize(kSOCKS5GreetResponse);
1899 1930
1900 const char kSOCKS5OkRequest[] = 1931 const char kSOCKS5OkRequest[] = {0x05, 0x01, 0x00, 0x03, 0x04, 'h',
1901 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; 1932 'o', 's', 't', 0x00, 0x50};
1902 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); 1933 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest);
1903 1934
1904 const char kSOCKS5OkResponse[] = 1935 const char kSOCKS5OkResponse[] = {0x05, 0x00, 0x00, 0x01, 127,
1905 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; 1936 0, 0, 1, 0x00, 0x50};
1906 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); 1937 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse);
1907 1938
1908 } // namespace net 1939 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698