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_stream/socket_stream.h" | 5 #include "net/socket_stream/socket_stream.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 | 272 |
273 scoped_ptr<SocketStreamEventRecorder> delegate( | 273 scoped_ptr<SocketStreamEventRecorder> delegate( |
274 new SocketStreamEventRecorder(test_callback.callback())); | 274 new SocketStreamEventRecorder(test_callback.callback())); |
275 delegate->SetOnConnected(base::Bind( | 275 delegate->SetOnConnected(base::Bind( |
276 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); | 276 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); |
277 delegate->SetOnReceivedData(base::Bind( | 277 delegate->SetOnReceivedData(base::Bind( |
278 &SocketStreamTest::DoCloseFlushPendingWriteTest, | 278 &SocketStreamTest::DoCloseFlushPendingWriteTest, |
279 base::Unretained(this))); | 279 base::Unretained(this))); |
280 | 280 |
281 MockHostResolver host_resolver; | 281 MockHostResolver host_resolver; |
| 282 TestURLRequestContext context; |
282 | 283 |
283 scoped_refptr<SocketStream> socket_stream( | 284 scoped_refptr<SocketStream> socket_stream( |
284 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 285 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
285 | 286 |
286 socket_stream->set_context(new TestURLRequestContext()); | 287 socket_stream->set_context(&context); |
287 socket_stream->SetHostResolver(&host_resolver); | 288 socket_stream->SetHostResolver(&host_resolver); |
288 | 289 |
289 MockWrite data_writes[] = { | 290 MockWrite data_writes[] = { |
290 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), | 291 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), |
291 MockWrite(ASYNC, "\0message1\xff", 10), | 292 MockWrite(ASYNC, "\0message1\xff", 10), |
292 MockWrite(ASYNC, "\0message2\xff", 10) | 293 MockWrite(ASYNC, "\0message2\xff", 10) |
293 }; | 294 }; |
294 MockRead data_reads[] = { | 295 MockRead data_reads[] = { |
295 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), | 296 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), |
296 // Server doesn't close the connection after handshake. | 297 // Server doesn't close the connection after handshake. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 base::Unretained(delegate.get()))); | 373 base::Unretained(delegate.get()))); |
373 delegate->SetAuthInfo(net::AuthCredentials(ASCIIToUTF16("foo"), | 374 delegate->SetAuthInfo(net::AuthCredentials(ASCIIToUTF16("foo"), |
374 ASCIIToUTF16("bar"))); | 375 ASCIIToUTF16("bar"))); |
375 delegate->SetOnAuthRequired(base::Bind( | 376 delegate->SetOnAuthRequired(base::Bind( |
376 &SocketStreamEventRecorder::DoRestartWithAuth, | 377 &SocketStreamEventRecorder::DoRestartWithAuth, |
377 base::Unretained(delegate.get()))); | 378 base::Unretained(delegate.get()))); |
378 | 379 |
379 scoped_refptr<SocketStream> socket_stream( | 380 scoped_refptr<SocketStream> socket_stream( |
380 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 381 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
381 | 382 |
382 socket_stream->set_context(new TestURLRequestContext("myproxy:70")); | |
383 MockHostResolver host_resolver; | 383 MockHostResolver host_resolver; |
| 384 TestURLRequestContext context("myproxy:70"); |
| 385 |
| 386 socket_stream->set_context(&context); |
384 socket_stream->SetHostResolver(&host_resolver); | 387 socket_stream->SetHostResolver(&host_resolver); |
385 socket_stream->SetClientSocketFactory(&mock_socket_factory); | 388 socket_stream->SetClientSocketFactory(&mock_socket_factory); |
386 | 389 |
387 socket_stream->Connect(); | 390 socket_stream->Connect(); |
388 | 391 |
389 test_callback.WaitForResult(); | 392 test_callback.WaitForResult(); |
390 | 393 |
391 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); | 394 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); |
392 ASSERT_EQ(5U, events.size()); | 395 ASSERT_EQ(5U, events.size()); |
393 | 396 |
(...skipping 15 matching lines...) Expand all Loading... |
409 new SocketStreamEventRecorder(test_callback.callback())); | 412 new SocketStreamEventRecorder(test_callback.callback())); |
410 delegate->SetOnConnected(base::Bind( | 413 delegate->SetOnConnected(base::Bind( |
411 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); | 414 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); |
412 delegate->SetOnReceivedData(base::Bind( | 415 delegate->SetOnReceivedData(base::Bind( |
413 &SocketStreamTest::DoCloseFlushPendingWriteTest, | 416 &SocketStreamTest::DoCloseFlushPendingWriteTest, |
414 base::Unretained(this))); | 417 base::Unretained(this))); |
415 delegate->SetOnStartOpenConnection(base::Bind( | 418 delegate->SetOnStartOpenConnection(base::Bind( |
416 &SocketStreamTest::DoIOPending, base::Unretained(this))); | 419 &SocketStreamTest::DoIOPending, base::Unretained(this))); |
417 | 420 |
418 MockHostResolver host_resolver; | 421 MockHostResolver host_resolver; |
| 422 TestURLRequestContext context; |
419 | 423 |
420 scoped_refptr<SocketStream> socket_stream( | 424 scoped_refptr<SocketStream> socket_stream( |
421 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 425 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
422 | 426 |
423 socket_stream->set_context(new TestURLRequestContext()); | 427 socket_stream->set_context(&context); |
424 socket_stream->SetHostResolver(&host_resolver); | 428 socket_stream->SetHostResolver(&host_resolver); |
425 | 429 |
426 MockWrite data_writes[] = { | 430 MockWrite data_writes[] = { |
427 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), | 431 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), |
428 MockWrite(ASYNC, "\0message1\xff", 10), | 432 MockWrite(ASYNC, "\0message1\xff", 10), |
429 MockWrite(ASYNC, "\0message2\xff", 10) | 433 MockWrite(ASYNC, "\0message2\xff", 10) |
430 }; | 434 }; |
431 MockRead data_reads[] = { | 435 MockRead data_reads[] = { |
432 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), | 436 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), |
433 // Server doesn't close the connection after handshake. | 437 // Server doesn't close the connection after handshake. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 | 476 |
473 TEST_F(SocketStreamTest, SwitchToSpdy) { | 477 TEST_F(SocketStreamTest, SwitchToSpdy) { |
474 TestCompletionCallback test_callback; | 478 TestCompletionCallback test_callback; |
475 | 479 |
476 scoped_ptr<SocketStreamEventRecorder> delegate( | 480 scoped_ptr<SocketStreamEventRecorder> delegate( |
477 new SocketStreamEventRecorder(test_callback.callback())); | 481 new SocketStreamEventRecorder(test_callback.callback())); |
478 delegate->SetOnStartOpenConnection(base::Bind( | 482 delegate->SetOnStartOpenConnection(base::Bind( |
479 &SocketStreamTest::DoSwitchToSpdyTest, base::Unretained(this))); | 483 &SocketStreamTest::DoSwitchToSpdyTest, base::Unretained(this))); |
480 | 484 |
481 MockHostResolver host_resolver; | 485 MockHostResolver host_resolver; |
| 486 TestURLRequestContext context; |
482 | 487 |
483 scoped_refptr<SocketStream> socket_stream( | 488 scoped_refptr<SocketStream> socket_stream( |
484 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 489 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
485 | 490 |
486 socket_stream->set_context(new TestURLRequestContext()); | 491 socket_stream->set_context(&context); |
487 socket_stream->SetHostResolver(&host_resolver); | 492 socket_stream->SetHostResolver(&host_resolver); |
488 | 493 |
489 socket_stream->Connect(); | 494 socket_stream->Connect(); |
490 | 495 |
491 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); | 496 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); |
492 | 497 |
493 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); | 498 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); |
494 ASSERT_EQ(2U, events.size()); | 499 ASSERT_EQ(2U, events.size()); |
495 | 500 |
496 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, | 501 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, |
497 events[0].event_type); | 502 events[0].event_type); |
498 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type); | 503 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type); |
499 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, events[1].error_code); | 504 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, events[1].error_code); |
500 } | 505 } |
501 | 506 |
502 TEST_F(SocketStreamTest, SwitchAfterPending) { | 507 TEST_F(SocketStreamTest, SwitchAfterPending) { |
503 TestCompletionCallback test_callback; | 508 TestCompletionCallback test_callback; |
504 | 509 |
505 scoped_ptr<SocketStreamEventRecorder> delegate( | 510 scoped_ptr<SocketStreamEventRecorder> delegate( |
506 new SocketStreamEventRecorder(test_callback.callback())); | 511 new SocketStreamEventRecorder(test_callback.callback())); |
507 delegate->SetOnStartOpenConnection(base::Bind( | 512 delegate->SetOnStartOpenConnection(base::Bind( |
508 &SocketStreamTest::DoIOPending, base::Unretained(this))); | 513 &SocketStreamTest::DoIOPending, base::Unretained(this))); |
509 | 514 |
510 MockHostResolver host_resolver; | 515 MockHostResolver host_resolver; |
| 516 TestURLRequestContext context; |
511 | 517 |
512 scoped_refptr<SocketStream> socket_stream( | 518 scoped_refptr<SocketStream> socket_stream( |
513 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 519 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
514 | 520 |
515 socket_stream->set_context(new TestURLRequestContext()); | 521 socket_stream->set_context(&context); |
516 socket_stream->SetHostResolver(&host_resolver); | 522 socket_stream->SetHostResolver(&host_resolver); |
517 | 523 |
518 socket_stream->Connect(); | 524 socket_stream->Connect(); |
519 io_test_callback_.WaitForResult(); | 525 io_test_callback_.WaitForResult(); |
520 EXPECT_EQ(net::SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE, | 526 EXPECT_EQ(net::SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE, |
521 socket_stream->next_state_); | 527 socket_stream->next_state_); |
522 delegate->CompleteConnection(net::ERR_PROTOCOL_SWITCHED); | 528 delegate->CompleteConnection(net::ERR_PROTOCOL_SWITCHED); |
523 | 529 |
524 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); | 530 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); |
525 | 531 |
(...skipping 23 matching lines...) Expand all Loading... |
549 // server doesn't close the connection. | 555 // server doesn't close the connection. |
550 MockRead(ASYNC, ERR_IO_PENDING) | 556 MockRead(ASYNC, ERR_IO_PENDING) |
551 }; | 557 }; |
552 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 558 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
553 data_writes, arraysize(data_writes)); | 559 data_writes, arraysize(data_writes)); |
554 mock_socket_factory.AddSocketDataProvider(&data); | 560 mock_socket_factory.AddSocketDataProvider(&data); |
555 SSLSocketDataProvider ssl(SYNCHRONOUS, ERR_SSL_PROTOCOL_ERROR); | 561 SSLSocketDataProvider ssl(SYNCHRONOUS, ERR_SSL_PROTOCOL_ERROR); |
556 mock_socket_factory.AddSSLSocketDataProvider(&ssl); | 562 mock_socket_factory.AddSSLSocketDataProvider(&ssl); |
557 | 563 |
558 TestCompletionCallback test_callback; | 564 TestCompletionCallback test_callback; |
| 565 MockHostResolver host_resolver; |
| 566 TestURLRequestContext context("https://myproxy:70"); |
559 | 567 |
560 scoped_ptr<SocketStreamEventRecorder> delegate( | 568 scoped_ptr<SocketStreamEventRecorder> delegate( |
561 new SocketStreamEventRecorder(test_callback.callback())); | 569 new SocketStreamEventRecorder(test_callback.callback())); |
562 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, | 570 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, |
563 base::Unretained(delegate.get()))); | 571 base::Unretained(delegate.get()))); |
564 | 572 |
565 scoped_refptr<SocketStream> socket_stream( | 573 scoped_refptr<SocketStream> socket_stream( |
566 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 574 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
567 | 575 |
568 socket_stream->set_context(new TestURLRequestContext("https://myproxy:70")); | 576 socket_stream->set_context(&context); |
569 MockHostResolver host_resolver; | |
570 socket_stream->SetHostResolver(&host_resolver); | 577 socket_stream->SetHostResolver(&host_resolver); |
571 socket_stream->SetClientSocketFactory(&mock_socket_factory); | 578 socket_stream->SetClientSocketFactory(&mock_socket_factory); |
572 | 579 |
573 socket_stream->Connect(); | 580 socket_stream->Connect(); |
574 | 581 |
575 test_callback.WaitForResult(); | 582 test_callback.WaitForResult(); |
576 | 583 |
577 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); | 584 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); |
578 ASSERT_EQ(3U, events.size()); | 585 ASSERT_EQ(3U, events.size()); |
579 | 586 |
(...skipping 21 matching lines...) Expand all Loading... |
601 // server doesn't close the connection. | 608 // server doesn't close the connection. |
602 MockRead(ASYNC, ERR_IO_PENDING) | 609 MockRead(ASYNC, ERR_IO_PENDING) |
603 }; | 610 }; |
604 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 611 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
605 data_writes, arraysize(data_writes)); | 612 data_writes, arraysize(data_writes)); |
606 mock_socket_factory.AddSocketDataProvider(&data); | 613 mock_socket_factory.AddSocketDataProvider(&data); |
607 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 614 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
608 mock_socket_factory.AddSSLSocketDataProvider(&ssl); | 615 mock_socket_factory.AddSSLSocketDataProvider(&ssl); |
609 | 616 |
610 TestCompletionCallback test_callback; | 617 TestCompletionCallback test_callback; |
| 618 MockHostResolver host_resolver; |
| 619 TestURLRequestContext context("https://myproxy:70"); |
611 | 620 |
612 scoped_ptr<SocketStreamEventRecorder> delegate( | 621 scoped_ptr<SocketStreamEventRecorder> delegate( |
613 new SocketStreamEventRecorder(test_callback.callback())); | 622 new SocketStreamEventRecorder(test_callback.callback())); |
614 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, | 623 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, |
615 base::Unretained(delegate.get()))); | 624 base::Unretained(delegate.get()))); |
616 | 625 |
617 scoped_refptr<SocketStream> socket_stream( | 626 scoped_refptr<SocketStream> socket_stream( |
618 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 627 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
619 | 628 |
620 socket_stream->set_context(new TestURLRequestContext("https://myproxy:70")); | 629 socket_stream->set_context(&context); |
621 MockHostResolver host_resolver; | |
622 socket_stream->SetHostResolver(&host_resolver); | 630 socket_stream->SetHostResolver(&host_resolver); |
623 socket_stream->SetClientSocketFactory(&mock_socket_factory); | 631 socket_stream->SetClientSocketFactory(&mock_socket_factory); |
624 | 632 |
625 socket_stream->Connect(); | 633 socket_stream->Connect(); |
626 | 634 |
627 test_callback.WaitForResult(); | 635 test_callback.WaitForResult(); |
628 | 636 |
629 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); | 637 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); |
630 ASSERT_EQ(4U, events.size()); | 638 ASSERT_EQ(4U, events.size()); |
631 | 639 |
632 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, | 640 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, |
633 events[0].event_type); | 641 events[0].event_type); |
634 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); | 642 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); |
635 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); | 643 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); |
636 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); | 644 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); |
637 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); | 645 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); |
638 } | 646 } |
639 | 647 |
640 } // namespace net | 648 } // namespace net |
OLD | NEW |