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

Side by Side Diff: net/socket_stream/socket_stream_unittest.cc

Issue 197043005: original change (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: fix other build error Created 6 years, 9 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_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 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 frame.push_back('\xff'); 311 frame.push_back('\xff');
312 EXPECT_TRUE(event->socket->SendData(&frame[0], frame.size())); 312 EXPECT_TRUE(event->socket->SendData(&frame[0], frame.size()));
313 } 313 }
314 // Actual StreamSocket close must happen after all frames queued by 314 // Actual StreamSocket close must happen after all frames queued by
315 // SendData above are sent out. 315 // SendData above are sent out.
316 event->socket->Close(); 316 event->socket->Close();
317 } 317 }
318 318
319 virtual void DoCloseFlushPendingWriteTestWithSetContextNull( 319 virtual void DoCloseFlushPendingWriteTestWithSetContextNull(
320 SocketStreamEvent* event) { 320 SocketStreamEvent* event) {
321 event->socket->set_context(NULL); 321 event->socket->DetachContext();
322 // handshake response received. 322 // handshake response received.
323 for (size_t i = 0; i < messages_.size(); i++) { 323 for (size_t i = 0; i < messages_.size(); i++) {
324 std::vector<char> frame; 324 std::vector<char> frame;
325 frame.push_back('\0'); 325 frame.push_back('\0');
326 frame.insert(frame.end(), messages_[i].begin(), messages_[i].end()); 326 frame.insert(frame.end(), messages_[i].begin(), messages_[i].end());
327 frame.push_back('\xff'); 327 frame.push_back('\xff');
328 EXPECT_TRUE(event->socket->SendData(&frame[0], frame.size())); 328 EXPECT_TRUE(event->socket->SendData(&frame[0], frame.size()));
329 } 329 }
330 // Actual StreamSocket close must happen after all frames queued by 330 // Actual StreamSocket close must happen after all frames queued by
331 // SendData above are sent out. 331 // SendData above are sent out.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 new SocketStreamEventRecorder(test_callback.callback())); 393 new SocketStreamEventRecorder(test_callback.callback()));
394 delegate->SetOnConnected(base::Bind( 394 delegate->SetOnConnected(base::Bind(
395 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); 395 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this)));
396 delegate->SetOnReceivedData(base::Bind( 396 delegate->SetOnReceivedData(base::Bind(
397 &SocketStreamTest::DoCloseFlushPendingWriteTest, 397 &SocketStreamTest::DoCloseFlushPendingWriteTest,
398 base::Unretained(this))); 398 base::Unretained(this)));
399 399
400 TestURLRequestContext context; 400 TestURLRequestContext context;
401 401
402 scoped_refptr<SocketStream> socket_stream( 402 scoped_refptr<SocketStream> socket_stream(
403 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 403 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
404 404 &context, NULL));
405 socket_stream->set_context(&context);
406 405
407 MockWrite data_writes[] = { 406 MockWrite data_writes[] = {
408 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), 407 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest),
409 MockWrite(ASYNC, "\0message1\xff", 10), 408 MockWrite(ASYNC, "\0message1\xff", 10),
410 MockWrite(ASYNC, "\0message2\xff", 10) 409 MockWrite(ASYNC, "\0message2\xff", 10)
411 }; 410 };
412 MockRead data_reads[] = { 411 MockRead data_reads[] = {
413 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), 412 MockRead(SocketStreamTest::kWebSocketHandshakeResponse),
414 // Server doesn't close the connection after handshake. 413 // Server doesn't close the connection after handshake.
415 MockRead(ASYNC, ERR_IO_PENDING) 414 MockRead(ASYNC, ERR_IO_PENDING)
(...skipping 30 matching lines...) Expand all
446 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[5].event_type); 445 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[5].event_type);
447 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[6].event_type); 446 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[6].event_type);
448 } 447 }
449 448
450 TEST_F(SocketStreamTest, ResolveFailure) { 449 TEST_F(SocketStreamTest, ResolveFailure) {
451 TestCompletionCallback test_callback; 450 TestCompletionCallback test_callback;
452 451
453 scoped_ptr<SocketStreamEventRecorder> delegate( 452 scoped_ptr<SocketStreamEventRecorder> delegate(
454 new SocketStreamEventRecorder(test_callback.callback())); 453 new SocketStreamEventRecorder(test_callback.callback()));
455 454
456 scoped_refptr<SocketStream> socket_stream(
457 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
458
459 // Make resolver fail. 455 // Make resolver fail.
460 TestURLRequestContext context; 456 TestURLRequestContext context;
461 scoped_ptr<MockHostResolver> mock_host_resolver( 457 scoped_ptr<MockHostResolver> mock_host_resolver(
462 new MockHostResolver()); 458 new MockHostResolver());
463 mock_host_resolver->rules()->AddSimulatedFailure("example.com"); 459 mock_host_resolver->rules()->AddSimulatedFailure("example.com");
464 context.set_host_resolver(mock_host_resolver.get()); 460 context.set_host_resolver(mock_host_resolver.get());
465 socket_stream->set_context(&context); 461
462 scoped_refptr<SocketStream> socket_stream(
463 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
464 &context, NULL));
466 465
467 // No read/write on socket is expected. 466 // No read/write on socket is expected.
468 StaticSocketDataProvider data_provider(NULL, 0, NULL, 0); 467 StaticSocketDataProvider data_provider(NULL, 0, NULL, 0);
469 MockClientSocketFactory* mock_socket_factory = 468 MockClientSocketFactory* mock_socket_factory =
470 GetMockClientSocketFactory(); 469 GetMockClientSocketFactory();
471 mock_socket_factory->AddSocketDataProvider(&data_provider); 470 mock_socket_factory->AddSocketDataProvider(&data_provider);
472 socket_stream->SetClientSocketFactory(mock_socket_factory); 471 socket_stream->SetClientSocketFactory(mock_socket_factory);
473 472
474 socket_stream->Connect(); 473 socket_stream->Connect();
475 474
(...skipping 10 matching lines...) Expand all
486 TestCompletionCallback test_callback; 485 TestCompletionCallback test_callback;
487 486
488 scoped_ptr<SocketStreamEventRecorder> delegate( 487 scoped_ptr<SocketStreamEventRecorder> delegate(
489 new SocketStreamEventRecorder(test_callback.callback())); 488 new SocketStreamEventRecorder(test_callback.callback()));
490 delegate->SetOnConnected(base::Bind( 489 delegate->SetOnConnected(base::Bind(
491 &SocketStreamTest::DoFailByTooBigDataAndClose, base::Unretained(this))); 490 &SocketStreamTest::DoFailByTooBigDataAndClose, base::Unretained(this)));
492 491
493 TestURLRequestContext context; 492 TestURLRequestContext context;
494 493
495 scoped_refptr<SocketStream> socket_stream( 494 scoped_refptr<SocketStream> socket_stream(
496 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 495 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
497 496 &context, NULL));
498 socket_stream->set_context(&context);
499 497
500 DelayedSocketData data_provider(1, NULL, 0, NULL, 0); 498 DelayedSocketData data_provider(1, NULL, 0, NULL, 0);
501 499
502 MockClientSocketFactory* mock_socket_factory = 500 MockClientSocketFactory* mock_socket_factory =
503 GetMockClientSocketFactory(); 501 GetMockClientSocketFactory();
504 mock_socket_factory->AddSocketDataProvider(&data_provider); 502 mock_socket_factory->AddSocketDataProvider(&data_provider);
505 503
506 socket_stream->SetClientSocketFactory(mock_socket_factory); 504 socket_stream->SetClientSocketFactory(mock_socket_factory);
507 505
508 socket_stream->Connect(); 506 socket_stream->Connect();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 scoped_ptr<SocketStreamEventRecorder> delegate( 557 scoped_ptr<SocketStreamEventRecorder> delegate(
560 new SocketStreamEventRecorder(test_callback.callback())); 558 new SocketStreamEventRecorder(test_callback.callback()));
561 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, 559 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose,
562 base::Unretained(delegate.get()))); 560 base::Unretained(delegate.get())));
563 delegate->SetAuthInfo(AuthCredentials(ASCIIToUTF16("foo"), 561 delegate->SetAuthInfo(AuthCredentials(ASCIIToUTF16("foo"),
564 ASCIIToUTF16("bar"))); 562 ASCIIToUTF16("bar")));
565 delegate->SetOnAuthRequired(base::Bind( 563 delegate->SetOnAuthRequired(base::Bind(
566 &SocketStreamEventRecorder::DoRestartWithAuth, 564 &SocketStreamEventRecorder::DoRestartWithAuth,
567 base::Unretained(delegate.get()))); 565 base::Unretained(delegate.get())));
568 566
569 scoped_refptr<SocketStream> socket_stream(
570 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
571
572 TestURLRequestContextWithProxy context("myproxy:70"); 567 TestURLRequestContextWithProxy context("myproxy:70");
573 568
574 socket_stream->set_context(&context); 569 scoped_refptr<SocketStream> socket_stream(
570 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
571 &context, NULL));
572
575 socket_stream->SetClientSocketFactory(&mock_socket_factory); 573 socket_stream->SetClientSocketFactory(&mock_socket_factory);
576 574
577 socket_stream->Connect(); 575 socket_stream->Connect();
578 576
579 test_callback.WaitForResult(); 577 test_callback.WaitForResult();
580 578
581 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 579 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
582 ASSERT_EQ(5U, events.size()); 580 ASSERT_EQ(5U, events.size());
583 581
584 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 582 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
(...skipping 26 matching lines...) Expand all
611 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 609 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
612 data_writes, arraysize(data_writes)); 610 data_writes, arraysize(data_writes));
613 mock_socket_factory.AddSocketDataProvider(&data); 611 mock_socket_factory.AddSocketDataProvider(&data);
614 612
615 TestCompletionCallback test_callback; 613 TestCompletionCallback test_callback;
616 scoped_ptr<SocketStreamEventRecorder> delegate( 614 scoped_ptr<SocketStreamEventRecorder> delegate(
617 new SocketStreamEventRecorder(test_callback.callback())); 615 new SocketStreamEventRecorder(test_callback.callback()));
618 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, 616 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose,
619 base::Unretained(delegate.get()))); 617 base::Unretained(delegate.get())));
620 618
621 scoped_refptr<SocketStream> socket_stream(
622 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
623
624 TestURLRequestContextWithProxy context("myproxy:70"); 619 TestURLRequestContextWithProxy context("myproxy:70");
625 HttpAuthCache* auth_cache = 620 HttpAuthCache* auth_cache =
626 context.http_transaction_factory()->GetSession()->http_auth_cache(); 621 context.http_transaction_factory()->GetSession()->http_auth_cache();
627 auth_cache->Add(GURL("http://myproxy:70"), 622 auth_cache->Add(GURL("http://myproxy:70"),
628 "MyRealm1", 623 "MyRealm1",
629 HttpAuth::AUTH_SCHEME_BASIC, 624 HttpAuth::AUTH_SCHEME_BASIC,
630 "Basic realm=MyRealm1", 625 "Basic realm=MyRealm1",
631 AuthCredentials(ASCIIToUTF16("foo"), 626 AuthCredentials(ASCIIToUTF16("foo"),
632 ASCIIToUTF16("bar")), 627 ASCIIToUTF16("bar")),
633 "/"); 628 "/");
634 629
635 socket_stream->set_context(&context); 630 scoped_refptr<SocketStream> socket_stream(
631 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
632 &context, NULL));
633
636 socket_stream->SetClientSocketFactory(&mock_socket_factory); 634 socket_stream->SetClientSocketFactory(&mock_socket_factory);
637 635
638 socket_stream->Connect(); 636 socket_stream->Connect();
639 637
640 test_callback.WaitForResult(); 638 test_callback.WaitForResult();
641 639
642 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 640 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
643 ASSERT_EQ(4U, events.size()); 641 ASSERT_EQ(4U, events.size());
644 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 642 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
645 events[0].event_type); 643 events[0].event_type);
(...skipping 22 matching lines...) Expand all
668 666
669 SSLSocketDataProvider data2(ASYNC, OK); 667 SSLSocketDataProvider data2(ASYNC, OK);
670 mock_socket_factory.AddSSLSocketDataProvider(&data2); 668 mock_socket_factory.AddSSLSocketDataProvider(&data2);
671 669
672 TestCompletionCallback test_callback; 670 TestCompletionCallback test_callback;
673 scoped_ptr<SocketStreamEventRecorder> delegate( 671 scoped_ptr<SocketStreamEventRecorder> delegate(
674 new SocketStreamEventRecorder(test_callback.callback())); 672 new SocketStreamEventRecorder(test_callback.callback()));
675 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, 673 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose,
676 base::Unretained(delegate.get()))); 674 base::Unretained(delegate.get())));
677 675
678 scoped_refptr<SocketStream> socket_stream(
679 new SocketStream(GURL("wss://example.com/demo"), delegate.get()));
680
681 TestURLRequestContextWithProxy context("myproxy:70"); 676 TestURLRequestContextWithProxy context("myproxy:70");
682 HttpAuthCache* auth_cache = 677 HttpAuthCache* auth_cache =
683 context.http_transaction_factory()->GetSession()->http_auth_cache(); 678 context.http_transaction_factory()->GetSession()->http_auth_cache();
684 auth_cache->Add(GURL("http://myproxy:70"), 679 auth_cache->Add(GURL("http://myproxy:70"),
685 "MyRealm1", 680 "MyRealm1",
686 HttpAuth::AUTH_SCHEME_BASIC, 681 HttpAuth::AUTH_SCHEME_BASIC,
687 "Basic realm=MyRealm1", 682 "Basic realm=MyRealm1",
688 AuthCredentials(ASCIIToUTF16("foo"), 683 AuthCredentials(ASCIIToUTF16("foo"),
689 ASCIIToUTF16("bar")), 684 ASCIIToUTF16("bar")),
690 "/"); 685 "/");
691 686
692 socket_stream->set_context(&context); 687 scoped_refptr<SocketStream> socket_stream(
688 new SocketStream(GURL("wss://example.com/demo"), delegate.get(),
689 &context, NULL));
690
693 socket_stream->SetClientSocketFactory(&mock_socket_factory); 691 socket_stream->SetClientSocketFactory(&mock_socket_factory);
694 692
695 socket_stream->Connect(); 693 socket_stream->Connect();
696 694
697 test_callback.WaitForResult(); 695 test_callback.WaitForResult();
698 696
699 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 697 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
700 ASSERT_EQ(4U, events.size()); 698 ASSERT_EQ(4U, events.size());
701 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 699 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
702 events[0].event_type); 700 events[0].event_type);
(...skipping 11 matching lines...) Expand all
714 &SocketStreamTest::DoIOPending, base::Unretained(this))); 712 &SocketStreamTest::DoIOPending, base::Unretained(this)));
715 delegate->SetOnConnected(base::Bind( 713 delegate->SetOnConnected(base::Bind(
716 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); 714 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this)));
717 delegate->SetOnReceivedData(base::Bind( 715 delegate->SetOnReceivedData(base::Bind(
718 &SocketStreamTest::DoCloseFlushPendingWriteTest, 716 &SocketStreamTest::DoCloseFlushPendingWriteTest,
719 base::Unretained(this))); 717 base::Unretained(this)));
720 718
721 TestURLRequestContext context; 719 TestURLRequestContext context;
722 720
723 scoped_refptr<SocketStream> socket_stream( 721 scoped_refptr<SocketStream> socket_stream(
724 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 722 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
725 723 &context, NULL));
726 socket_stream->set_context(&context);
727 724
728 MockWrite data_writes[] = { 725 MockWrite data_writes[] = {
729 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), 726 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest),
730 MockWrite(ASYNC, "\0message1\xff", 10), 727 MockWrite(ASYNC, "\0message1\xff", 10),
731 MockWrite(ASYNC, "\0message2\xff", 10) 728 MockWrite(ASYNC, "\0message2\xff", 10)
732 }; 729 };
733 MockRead data_reads[] = { 730 MockRead data_reads[] = {
734 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), 731 MockRead(SocketStreamTest::kWebSocketHandshakeResponse),
735 // Server doesn't close the connection after handshake. 732 // Server doesn't close the connection after handshake.
736 MockRead(ASYNC, ERR_IO_PENDING) 733 MockRead(ASYNC, ERR_IO_PENDING)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 TestCompletionCallback test_callback; 773 TestCompletionCallback test_callback;
777 774
778 scoped_ptr<SocketStreamEventRecorder> delegate( 775 scoped_ptr<SocketStreamEventRecorder> delegate(
779 new SocketStreamEventRecorder(test_callback.callback())); 776 new SocketStreamEventRecorder(test_callback.callback()));
780 delegate->SetOnStartOpenConnection(base::Bind( 777 delegate->SetOnStartOpenConnection(base::Bind(
781 &SocketStreamTest::DoSwitchToSpdyTest, base::Unretained(this))); 778 &SocketStreamTest::DoSwitchToSpdyTest, base::Unretained(this)));
782 779
783 TestURLRequestContext context; 780 TestURLRequestContext context;
784 781
785 scoped_refptr<SocketStream> socket_stream( 782 scoped_refptr<SocketStream> socket_stream(
786 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 783 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
787 784 &context, NULL));
788 socket_stream->set_context(&context);
789 785
790 socket_stream->Connect(); 786 socket_stream->Connect();
791 787
792 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); 788 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult());
793 789
794 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 790 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
795 ASSERT_EQ(2U, events.size()); 791 ASSERT_EQ(2U, events.size());
796 792
797 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 793 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
798 events[0].event_type); 794 events[0].event_type);
799 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type); 795 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type);
800 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, events[1].error_code); 796 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, events[1].error_code);
801 } 797 }
802 798
803 TEST_F(SocketStreamTest, SwitchAfterPending) { 799 TEST_F(SocketStreamTest, SwitchAfterPending) {
804 TestCompletionCallback test_callback; 800 TestCompletionCallback test_callback;
805 801
806 scoped_ptr<SocketStreamEventRecorder> delegate( 802 scoped_ptr<SocketStreamEventRecorder> delegate(
807 new SocketStreamEventRecorder(test_callback.callback())); 803 new SocketStreamEventRecorder(test_callback.callback()));
808 delegate->SetOnStartOpenConnection(base::Bind( 804 delegate->SetOnStartOpenConnection(base::Bind(
809 &SocketStreamTest::DoIOPending, base::Unretained(this))); 805 &SocketStreamTest::DoIOPending, base::Unretained(this)));
810 806
811 TestURLRequestContext context; 807 TestURLRequestContext context;
812 808
813 scoped_refptr<SocketStream> socket_stream( 809 scoped_refptr<SocketStream> socket_stream(
814 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 810 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
815 811 &context, NULL));
816 socket_stream->set_context(&context);
817 812
818 socket_stream->Connect(); 813 socket_stream->Connect();
819 io_test_callback_.WaitForResult(); 814 io_test_callback_.WaitForResult();
820 815
821 EXPECT_EQ(SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE, 816 EXPECT_EQ(SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE,
822 socket_stream->next_state_); 817 socket_stream->next_state_);
823 delegate->CompleteConnection(ERR_PROTOCOL_SWITCHED); 818 delegate->CompleteConnection(ERR_PROTOCOL_SWITCHED);
824 819
825 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); 820 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult());
826 821
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 853
859 TestCompletionCallback test_callback; 854 TestCompletionCallback test_callback;
860 TestURLRequestContextWithProxy context("https://myproxy:70"); 855 TestURLRequestContextWithProxy context("https://myproxy:70");
861 856
862 scoped_ptr<SocketStreamEventRecorder> delegate( 857 scoped_ptr<SocketStreamEventRecorder> delegate(
863 new SocketStreamEventRecorder(test_callback.callback())); 858 new SocketStreamEventRecorder(test_callback.callback()));
864 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, 859 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose,
865 base::Unretained(delegate.get()))); 860 base::Unretained(delegate.get())));
866 861
867 scoped_refptr<SocketStream> socket_stream( 862 scoped_refptr<SocketStream> socket_stream(
868 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 863 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
864 &context, NULL));
869 865
870 socket_stream->set_context(&context);
871 socket_stream->SetClientSocketFactory(&mock_socket_factory); 866 socket_stream->SetClientSocketFactory(&mock_socket_factory);
872 867
873 socket_stream->Connect(); 868 socket_stream->Connect();
874 869
875 test_callback.WaitForResult(); 870 test_callback.WaitForResult();
876 871
877 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 872 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
878 ASSERT_EQ(3U, events.size()); 873 ASSERT_EQ(3U, events.size());
879 874
880 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 875 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
(...skipping 28 matching lines...) Expand all
909 904
910 TestCompletionCallback test_callback; 905 TestCompletionCallback test_callback;
911 TestURLRequestContextWithProxy context("https://myproxy:70"); 906 TestURLRequestContextWithProxy context("https://myproxy:70");
912 907
913 scoped_ptr<SocketStreamEventRecorder> delegate( 908 scoped_ptr<SocketStreamEventRecorder> delegate(
914 new SocketStreamEventRecorder(test_callback.callback())); 909 new SocketStreamEventRecorder(test_callback.callback()));
915 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, 910 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose,
916 base::Unretained(delegate.get()))); 911 base::Unretained(delegate.get())));
917 912
918 scoped_refptr<SocketStream> socket_stream( 913 scoped_refptr<SocketStream> socket_stream(
919 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 914 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
915 &context, NULL));
920 916
921 socket_stream->set_context(&context);
922 socket_stream->SetClientSocketFactory(&mock_socket_factory); 917 socket_stream->SetClientSocketFactory(&mock_socket_factory);
923 918
924 socket_stream->Connect(); 919 socket_stream->Connect();
925 920
926 test_callback.WaitForResult(); 921 test_callback.WaitForResult();
927 922
928 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 923 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
929 ASSERT_EQ(4U, events.size()); 924 ASSERT_EQ(4U, events.size());
930 925
931 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 926 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
932 events[0].event_type); 927 events[0].event_type);
933 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 928 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
934 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); 929 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type);
935 EXPECT_EQ(ERR_ABORTED, events[2].error_code); 930 EXPECT_EQ(ERR_ABORTED, events[2].error_code);
936 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); 931 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type);
937 } 932 }
938 933
939 TEST_F(SocketStreamTest, BeforeConnectFailed) { 934 TEST_F(SocketStreamTest, BeforeConnectFailed) {
940 TestCompletionCallback test_callback; 935 TestCompletionCallback test_callback;
941 936
942 scoped_ptr<SocketStreamEventRecorder> delegate( 937 scoped_ptr<SocketStreamEventRecorder> delegate(
943 new SocketStreamEventRecorder(test_callback.callback())); 938 new SocketStreamEventRecorder(test_callback.callback()));
944 939
945 TestURLRequestContext context; 940 TestURLRequestContext context;
946 TestSocketStreamNetworkDelegate network_delegate; 941 TestSocketStreamNetworkDelegate network_delegate;
947 network_delegate.SetBeforeConnectResult(ERR_ACCESS_DENIED); 942 network_delegate.SetBeforeConnectResult(ERR_ACCESS_DENIED);
948 context.set_network_delegate(&network_delegate); 943 context.set_network_delegate(&network_delegate);
949 944
950 scoped_refptr<SocketStream> socket_stream( 945 scoped_refptr<SocketStream> socket_stream(
951 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 946 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
952 947 &context, NULL));
953 socket_stream->set_context(&context);
954 948
955 socket_stream->Connect(); 949 socket_stream->Connect();
956 950
957 test_callback.WaitForResult(); 951 test_callback.WaitForResult();
958 952
959 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 953 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
960 ASSERT_EQ(2U, events.size()); 954 ASSERT_EQ(2U, events.size());
961 955
962 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[0].event_type); 956 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[0].event_type);
963 EXPECT_EQ(ERR_ACCESS_DENIED, events[0].error_code); 957 EXPECT_EQ(ERR_ACCESS_DENIED, events[0].error_code);
(...skipping 10 matching lines...) Expand all
974 // connect it and the SocketStream. 968 // connect it and the SocketStream.
975 SelfDeletingDelegate* delegate = 969 SelfDeletingDelegate* delegate =
976 new SelfDeletingDelegate(test_callback.callback()); 970 new SelfDeletingDelegate(test_callback.callback());
977 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 971 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
978 StaticSocketDataProvider data; 972 StaticSocketDataProvider data;
979 data.set_connect_data(mock_connect); 973 data.set_connect_data(mock_connect);
980 mock_socket_factory.AddSocketDataProvider(&data); 974 mock_socket_factory.AddSocketDataProvider(&data);
981 975
982 TestURLRequestContext context; 976 TestURLRequestContext context;
983 scoped_refptr<SocketStream> socket_stream( 977 scoped_refptr<SocketStream> socket_stream(
984 new SocketStream(GURL("ws://localhost:9998/echo"), delegate)); 978 new SocketStream(GURL("ws://localhost:9998/echo"), delegate,
985 socket_stream->set_context(&context); 979 &context, NULL));
986 socket_stream->SetClientSocketFactory(&mock_socket_factory); 980 socket_stream->SetClientSocketFactory(&mock_socket_factory);
987 delegate->set_socket_stream(socket_stream); 981 delegate->set_socket_stream(socket_stream);
988 // The delegate pointer will become invalid during the test. Set it to NULL to 982 // The delegate pointer will become invalid during the test. Set it to NULL to
989 // avoid holding a dangling pointer. 983 // avoid holding a dangling pointer.
990 delegate = NULL; 984 delegate = NULL;
991 985
992 socket_stream->Connect(); 986 socket_stream->Connect();
993 987
994 EXPECT_EQ(OK, test_callback.WaitForResult()); 988 EXPECT_EQ(OK, test_callback.WaitForResult());
995 } 989 }
996 990
997 TEST_F(SocketStreamTest, NullContextSocketStreamShouldNotCrash) { 991 TEST_F(SocketStreamTest, NullContextSocketStreamShouldNotCrash) {
998 TestCompletionCallback test_callback; 992 TestCompletionCallback test_callback;
999 993
1000 scoped_ptr<SocketStreamEventRecorder> delegate( 994 scoped_ptr<SocketStreamEventRecorder> delegate(
1001 new SocketStreamEventRecorder(test_callback.callback())); 995 new SocketStreamEventRecorder(test_callback.callback()));
1002 TestURLRequestContext context; 996 TestURLRequestContext context;
1003 scoped_refptr<SocketStream> socket_stream( 997 scoped_refptr<SocketStream> socket_stream(
1004 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 998 new SocketStream(GURL("ws://example.com/demo"), delegate.get(),
999 &context, NULL));
1005 delegate->SetOnStartOpenConnection(base::Bind( 1000 delegate->SetOnStartOpenConnection(base::Bind(
1006 &SocketStreamTest::DoIOPending, base::Unretained(this))); 1001 &SocketStreamTest::DoIOPending, base::Unretained(this)));
1007 delegate->SetOnConnected(base::Bind( 1002 delegate->SetOnConnected(base::Bind(
1008 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); 1003 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this)));
1009 delegate->SetOnReceivedData(base::Bind( 1004 delegate->SetOnReceivedData(base::Bind(
1010 &SocketStreamTest::DoCloseFlushPendingWriteTestWithSetContextNull, 1005 &SocketStreamTest::DoCloseFlushPendingWriteTestWithSetContextNull,
1011 base::Unretained(this))); 1006 base::Unretained(this)));
1012 1007
1013 socket_stream->set_context(&context);
1014
1015 MockWrite data_writes[] = { 1008 MockWrite data_writes[] = {
1016 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), 1009 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest),
1017 }; 1010 };
1018 MockRead data_reads[] = { 1011 MockRead data_reads[] = {
1019 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), 1012 MockRead(SocketStreamTest::kWebSocketHandshakeResponse),
1020 }; 1013 };
1021 AddWebSocketMessage("message1"); 1014 AddWebSocketMessage("message1");
1022 AddWebSocketMessage("message2"); 1015 AddWebSocketMessage("message2");
1023 1016
1024 DelayedSocketData data_provider( 1017 DelayedSocketData data_provider(
(...skipping 17 matching lines...) Expand all
1042 1035
1043 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 1036 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
1044 events[0].event_type); 1037 events[0].event_type);
1045 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 1038 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
1046 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[2].event_type); 1039 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[2].event_type);
1047 EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[3].event_type); 1040 EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[3].event_type);
1048 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[4].event_type); 1041 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[4].event_type);
1049 } 1042 }
1050 1043
1051 } // namespace net 1044 } // namespace net
OLDNEW
« no previous file with comments | « net/socket_stream/socket_stream_job_manager.cc ('k') | net/test/spawned_test_server/spawner_communicator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698