OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/spdy/spdy_websocket_stream.h" | 5 #include "net/spdy/spdy_websocket_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 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_CLOSE, events[4].event_type); | 555 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_CLOSE, events[4].event_type); |
556 | 556 |
557 EXPECT_TRUE( | 557 EXPECT_TRUE( |
558 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); | 558 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); |
559 } | 559 } |
560 | 560 |
561 TEST_P(SpdyWebSocketStreamTest, IOPending) { | 561 TEST_P(SpdyWebSocketStreamTest, IOPending) { |
562 Prepare(1); | 562 Prepare(1); |
563 scoped_ptr<SpdyFrame> settings_frame( | 563 scoped_ptr<SpdyFrame> settings_frame( |
564 spdy_util_.ConstructSpdySettings(spdy_settings_to_send_)); | 564 spdy_util_.ConstructSpdySettings(spdy_settings_to_send_)); |
| 565 scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
565 MockWrite writes[] = { | 566 MockWrite writes[] = { |
566 CreateMockWrite(*request_frame_.get(), 1), | 567 CreateMockWrite(*settings_ack, 1), |
567 CreateMockWrite(*message_frame_.get(), 3), | 568 CreateMockWrite(*request_frame_.get(), 2), |
568 CreateMockWrite(*closing_frame_.get(), 5) | 569 CreateMockWrite(*message_frame_.get(), 4), |
| 570 CreateMockWrite(*closing_frame_.get(), 6) |
569 }; | 571 }; |
570 | 572 |
571 MockRead reads[] = { | 573 MockRead reads[] = { |
572 CreateMockRead(*settings_frame.get(), 0), | 574 CreateMockRead(*settings_frame.get(), 0), |
573 CreateMockRead(*response_frame_.get(), 2), | 575 CreateMockRead(*response_frame_.get(), 3), |
574 CreateMockRead(*message_frame_.get(), 4), | 576 CreateMockRead(*message_frame_.get(), 5), |
575 CreateMockRead(*closing_frame_.get(), 6), | 577 CreateMockRead(*closing_frame_.get(), 7), |
576 MockRead(SYNCHRONOUS, 0, 7) // EOF cause OnCloseSpdyStream event. | 578 MockRead(SYNCHRONOUS, 0, 8) // EOF cause OnCloseSpdyStream event. |
577 }; | 579 }; |
578 | 580 |
579 DeterministicSocketData data(reads, arraysize(reads), | 581 DeterministicSocketData data(reads, arraysize(reads), |
580 writes, arraysize(writes)); | 582 writes, arraysize(writes)); |
581 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); | 583 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
582 http_session_ = | 584 http_session_ = |
583 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); | 585 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); |
584 | 586 |
585 session_ = CreateInsecureSpdySession( | 587 session_ = CreateInsecureSpdySession( |
586 http_session_, spdy_session_key_, BoundNetLog()); | 588 http_session_, spdy_session_key_, BoundNetLog()); |
(...skipping 28 matching lines...) Expand all Loading... |
615 GURL url("ws://example.com/echo"); | 617 GURL url("ws://example.com/echo"); |
616 ASSERT_EQ(ERR_IO_PENDING, websocket_stream_->InitializeStream( | 618 ASSERT_EQ(ERR_IO_PENDING, websocket_stream_->InitializeStream( |
617 url, HIGHEST, net_log)); | 619 url, HIGHEST, net_log)); |
618 | 620 |
619 // Delete the fist stream to allow create the second stream. | 621 // Delete the fist stream to allow create the second stream. |
620 block_stream.reset(); | 622 block_stream.reset(); |
621 ASSERT_EQ(OK, sync_callback_.WaitForResult()); | 623 ASSERT_EQ(OK, sync_callback_.WaitForResult()); |
622 | 624 |
623 SendRequest(); | 625 SendRequest(); |
624 | 626 |
625 data.RunFor(7); | 627 data.RunFor(8); |
626 completion_callback_.WaitForResult(); | 628 completion_callback_.WaitForResult(); |
627 | 629 |
628 websocket_stream_.reset(); | 630 websocket_stream_.reset(); |
629 | 631 |
630 const std::vector<SpdyWebSocketStreamEvent>& block_events = | 632 const std::vector<SpdyWebSocketStreamEvent>& block_events = |
631 block_delegate.GetSeenEvents(); | 633 block_delegate.GetSeenEvents(); |
632 ASSERT_EQ(0U, block_events.size()); | 634 ASSERT_EQ(0U, block_events.size()); |
633 | 635 |
634 const std::vector<SpdyWebSocketStreamEvent>& events = | 636 const std::vector<SpdyWebSocketStreamEvent>& events = |
635 delegate.GetSeenEvents(); | 637 delegate.GetSeenEvents(); |
(...skipping 24 matching lines...) Expand all Loading... |
660 EXPECT_EQ(OK, events[7].result); | 662 EXPECT_EQ(OK, events[7].result); |
661 | 663 |
662 // EOF close SPDY session. | 664 // EOF close SPDY session. |
663 EXPECT_FALSE( | 665 EXPECT_FALSE( |
664 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); | 666 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); |
665 EXPECT_TRUE(data.at_read_eof()); | 667 EXPECT_TRUE(data.at_read_eof()); |
666 EXPECT_TRUE(data.at_write_eof()); | 668 EXPECT_TRUE(data.at_write_eof()); |
667 } | 669 } |
668 | 670 |
669 } // namespace net | 671 } // namespace net |
OLD | NEW |