| 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/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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 DISALLOW_COPY_AND_ASSIGN(SpdyWebSocketStreamEventRecorder); | 158 DISALLOW_COPY_AND_ASSIGN(SpdyWebSocketStreamEventRecorder); |
| 159 }; | 159 }; |
| 160 | 160 |
| 161 } // namespace | 161 } // namespace |
| 162 | 162 |
| 163 class SpdyWebSocketStreamSpdy2Test : public testing::Test { | 163 class SpdyWebSocketStreamSpdy2Test : public testing::Test { |
| 164 public: | 164 public: |
| 165 OrderedSocketData* data() { return data_.get(); } | 165 OrderedSocketData* data() { return data_.get(); } |
| 166 | 166 |
| 167 void DoSendHelloFrame(SpdyWebSocketStreamEvent* event) { | 167 void DoSendHelloFrame(SpdyWebSocketStreamEvent* event) { |
| 168 // record the actual stream_id |
| 169 created_stream_id_ = websocket_stream_->stream_->stream_id(); |
| 168 websocket_stream_->SendData(kMessageFrame, kMessageFrameLength); | 170 websocket_stream_->SendData(kMessageFrame, kMessageFrameLength); |
| 169 } | 171 } |
| 170 | 172 |
| 171 void DoSendClosingFrame(SpdyWebSocketStreamEvent* event) { | 173 void DoSendClosingFrame(SpdyWebSocketStreamEvent* event) { |
| 172 websocket_stream_->SendData(kClosingFrame, kClosingFrameLength); | 174 websocket_stream_->SendData(kClosingFrame, kClosingFrameLength); |
| 173 } | 175 } |
| 174 | 176 |
| 175 void DoClose(SpdyWebSocketStreamEvent* event) { | 177 void DoClose(SpdyWebSocketStreamEvent* event) { |
| 176 websocket_stream_->Close(); | 178 websocket_stream_->Close(); |
| 177 } | 179 } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 SpdySettingsFlags spdy_settings_flags_to_set_; | 293 SpdySettingsFlags spdy_settings_flags_to_set_; |
| 292 uint32 spdy_settings_value_to_set_; | 294 uint32 spdy_settings_value_to_set_; |
| 293 SettingsMap spdy_settings_to_send_; | 295 SettingsMap spdy_settings_to_send_; |
| 294 SpdySessionDependencies session_deps_; | 296 SpdySessionDependencies session_deps_; |
| 295 scoped_ptr<OrderedSocketData> data_; | 297 scoped_ptr<OrderedSocketData> data_; |
| 296 scoped_refptr<HttpNetworkSession> http_session_; | 298 scoped_refptr<HttpNetworkSession> http_session_; |
| 297 scoped_refptr<SpdySession> session_; | 299 scoped_refptr<SpdySession> session_; |
| 298 scoped_refptr<TransportSocketParams> transport_params_; | 300 scoped_refptr<TransportSocketParams> transport_params_; |
| 299 scoped_ptr<SpdyWebSocketStream> websocket_stream_; | 301 scoped_ptr<SpdyWebSocketStream> websocket_stream_; |
| 300 SpdyStreamId stream_id_; | 302 SpdyStreamId stream_id_; |
| 303 SpdyStreamId created_stream_id_; |
| 301 scoped_ptr<SpdyFrame> request_frame_; | 304 scoped_ptr<SpdyFrame> request_frame_; |
| 302 scoped_ptr<SpdyFrame> response_frame_; | 305 scoped_ptr<SpdyFrame> response_frame_; |
| 303 scoped_ptr<SpdyFrame> message_frame_; | 306 scoped_ptr<SpdyFrame> message_frame_; |
| 304 scoped_ptr<SpdyFrame> closing_frame_; | 307 scoped_ptr<SpdyFrame> closing_frame_; |
| 305 HostPortPair host_port_pair_; | 308 HostPortPair host_port_pair_; |
| 306 HostPortProxyPair host_port_proxy_pair_; | 309 HostPortProxyPair host_port_proxy_pair_; |
| 307 TestCompletionCallback completion_callback_; | 310 TestCompletionCallback completion_callback_; |
| 308 TestCompletionCallback sync_callback_; | 311 TestCompletionCallback sync_callback_; |
| 309 | 312 |
| 310 static const char kMessageFrame[]; | 313 static const char kMessageFrame[]; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 base::Bind(&SpdyWebSocketStreamSpdy2Test::DoSendClosingFrame, | 353 base::Bind(&SpdyWebSocketStreamSpdy2Test::DoSendClosingFrame, |
| 351 base::Unretained(this))); | 354 base::Unretained(this))); |
| 352 | 355 |
| 353 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); | 356 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); |
| 354 | 357 |
| 355 BoundNetLog net_log; | 358 BoundNetLog net_log; |
| 356 GURL url("ws://example.com/echo"); | 359 GURL url("ws://example.com/echo"); |
| 357 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 360 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
| 358 | 361 |
| 359 ASSERT_TRUE(websocket_stream_->stream_); | 362 ASSERT_TRUE(websocket_stream_->stream_); |
| 360 EXPECT_EQ(stream_id_, websocket_stream_->stream_->stream_id()); | |
| 361 | 363 |
| 362 SendRequest(); | 364 SendRequest(); |
| 363 | 365 |
| 364 completion_callback_.WaitForResult(); | 366 completion_callback_.WaitForResult(); |
| 365 | 367 |
| 368 EXPECT_EQ(stream_id_, created_stream_id_); |
| 369 |
| 366 websocket_stream_.reset(); | 370 websocket_stream_.reset(); |
| 367 | 371 |
| 368 const std::vector<SpdyWebSocketStreamEvent>& events = | 372 const std::vector<SpdyWebSocketStreamEvent>& events = |
| 369 delegate.GetSeenEvents(); | 373 delegate.GetSeenEvents(); |
| 370 ASSERT_EQ(7U, events.size()); | 374 ASSERT_EQ(7U, events.size()); |
| 371 | 375 |
| 372 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_SENT_HEADERS, | 376 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_SENT_HEADERS, |
| 373 events[0].event_type); | 377 events[0].event_type); |
| 374 EXPECT_LT(0, events[0].result); | 378 EXPECT_LT(0, events[0].result); |
| 375 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_RECEIVED_HEADER, | 379 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_RECEIVED_HEADER, |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_RECEIVED_DATA, | 519 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_RECEIVED_DATA, |
| 516 events[3].event_type); | 520 events[3].event_type); |
| 517 EXPECT_EQ(static_cast<int>(kMessageFrameLength), events[3].result); | 521 EXPECT_EQ(static_cast<int>(kMessageFrameLength), events[3].result); |
| 518 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_CLOSE, events[4].event_type); | 522 EXPECT_EQ(SpdyWebSocketStreamEvent::EVENT_CLOSE, events[4].event_type); |
| 519 | 523 |
| 520 EXPECT_TRUE(http_session_->spdy_session_pool()->HasSession( | 524 EXPECT_TRUE(http_session_->spdy_session_pool()->HasSession( |
| 521 host_port_proxy_pair_)); | 525 host_port_proxy_pair_)); |
| 522 } | 526 } |
| 523 | 527 |
| 524 TEST_F(SpdyWebSocketStreamSpdy2Test, IOPending) { | 528 TEST_F(SpdyWebSocketStreamSpdy2Test, IOPending) { |
| 525 Prepare(3); | 529 Prepare(1); |
| 526 scoped_ptr<SpdyFrame> settings_frame( | 530 scoped_ptr<SpdyFrame> settings_frame( |
| 527 ConstructSpdySettings(spdy_settings_to_send_)); | 531 ConstructSpdySettings(spdy_settings_to_send_)); |
| 528 MockWrite writes[] = { | 532 MockWrite writes[] = { |
| 529 // Setting throttling make SpdySession send settings frame automatically. | 533 // Setting throttling make SpdySession send settings frame automatically. |
| 530 CreateMockWrite(*settings_frame.get(), 1), | 534 CreateMockWrite(*settings_frame.get(), 1), |
| 531 CreateMockWrite(*request_frame_.get(), 3), | 535 CreateMockWrite(*request_frame_.get(), 3), |
| 532 CreateMockWrite(*message_frame_.get(), 6), | 536 CreateMockWrite(*message_frame_.get(), 6), |
| 533 CreateMockWrite(*closing_frame_.get(), 9) | 537 CreateMockWrite(*closing_frame_.get(), 9) |
| 534 }; | 538 }; |
| 535 | 539 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 EXPECT_EQ(OK, events[7].result); | 622 EXPECT_EQ(OK, events[7].result); |
| 619 | 623 |
| 620 // EOF close SPDY session. | 624 // EOF close SPDY session. |
| 621 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession( | 625 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession( |
| 622 host_port_proxy_pair_)); | 626 host_port_proxy_pair_)); |
| 623 EXPECT_TRUE(data()->at_read_eof()); | 627 EXPECT_TRUE(data()->at_read_eof()); |
| 624 EXPECT_TRUE(data()->at_write_eof()); | 628 EXPECT_TRUE(data()->at_write_eof()); |
| 625 } | 629 } |
| 626 | 630 |
| 627 } // namespace net | 631 } // namespace net |
| OLD | NEW |