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

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

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

Powered by Google App Engine
This is Rietveld 408576698