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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 } | 270 } |
271 | 271 |
272 SpdyWebSocketTestUtil spdy_util_; | 272 SpdyWebSocketTestUtil spdy_util_; |
273 SpdySettingsIds spdy_settings_id_to_set_; | 273 SpdySettingsIds spdy_settings_id_to_set_; |
274 SpdySettingsFlags spdy_settings_flags_to_set_; | 274 SpdySettingsFlags spdy_settings_flags_to_set_; |
275 uint32 spdy_settings_value_to_set_; | 275 uint32 spdy_settings_value_to_set_; |
276 SettingsMap spdy_settings_to_send_; | 276 SettingsMap spdy_settings_to_send_; |
277 SpdySessionDependencies session_deps_; | 277 SpdySessionDependencies session_deps_; |
278 scoped_ptr<OrderedSocketData> data_; | 278 scoped_ptr<OrderedSocketData> data_; |
279 scoped_refptr<HttpNetworkSession> http_session_; | 279 scoped_refptr<HttpNetworkSession> http_session_; |
280 scoped_refptr<SpdySession> session_; | 280 base::WeakPtr<SpdySession> session_; |
281 scoped_ptr<SpdyWebSocketStream> websocket_stream_; | 281 scoped_ptr<SpdyWebSocketStream> websocket_stream_; |
282 SpdyStreamId stream_id_; | 282 SpdyStreamId stream_id_; |
283 SpdyStreamId created_stream_id_; | 283 SpdyStreamId created_stream_id_; |
284 scoped_ptr<SpdyFrame> request_frame_; | 284 scoped_ptr<SpdyFrame> request_frame_; |
285 scoped_ptr<SpdyFrame> response_frame_; | 285 scoped_ptr<SpdyFrame> response_frame_; |
286 scoped_ptr<SpdyFrame> message_frame_; | 286 scoped_ptr<SpdyFrame> message_frame_; |
287 scoped_ptr<SpdyFrame> closing_frame_; | 287 scoped_ptr<SpdyFrame> closing_frame_; |
288 HostPortPair host_port_pair_; | 288 HostPortPair host_port_pair_; |
289 SpdySessionKey spdy_session_key_; | 289 SpdySessionKey spdy_session_key_; |
290 TestCompletionCallback completion_callback_; | 290 TestCompletionCallback completion_callback_; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 InitSession(reads, arraysize(reads), writes, arraysize(writes), false); | 329 InitSession(reads, arraysize(reads), writes, arraysize(writes), false); |
330 | 330 |
331 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 331 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
332 delegate.SetOnReceivedHeader( | 332 delegate.SetOnReceivedHeader( |
333 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, | 333 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, |
334 base::Unretained(this))); | 334 base::Unretained(this))); |
335 delegate.SetOnReceivedData( | 335 delegate.SetOnReceivedData( |
336 base::Bind(&SpdyWebSocketStreamTest::DoSendClosingFrame, | 336 base::Bind(&SpdyWebSocketStreamTest::DoSendClosingFrame, |
337 base::Unretained(this))); | 337 base::Unretained(this))); |
338 | 338 |
339 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); | 339 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); |
340 | 340 |
341 BoundNetLog net_log; | 341 BoundNetLog net_log; |
342 GURL url("ws://example.com/echo"); | 342 GURL url("ws://example.com/echo"); |
343 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 343 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
344 | 344 |
345 ASSERT_TRUE(websocket_stream_->stream_.get()); | 345 ASSERT_TRUE(websocket_stream_->stream_.get()); |
346 | 346 |
347 SendRequest(); | 347 SendRequest(); |
348 | 348 |
349 completion_callback_.WaitForResult(); | 349 completion_callback_.WaitForResult(); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 InitSession(reads, arraysize(reads), writes, arraysize(writes), false); | 401 InitSession(reads, arraysize(reads), writes, arraysize(writes), false); |
402 | 402 |
403 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 403 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
404 delegate.SetOnReceivedHeader( | 404 delegate.SetOnReceivedHeader( |
405 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, | 405 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, |
406 base::Unretained(this))); | 406 base::Unretained(this))); |
407 delegate.SetOnReceivedData( | 407 delegate.SetOnReceivedData( |
408 base::Bind(&SpdyWebSocketStreamTest::DoSync, | 408 base::Bind(&SpdyWebSocketStreamTest::DoSync, |
409 base::Unretained(this))); | 409 base::Unretained(this))); |
410 | 410 |
411 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); | 411 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); |
412 | 412 |
413 BoundNetLog net_log; | 413 BoundNetLog net_log; |
414 GURL url("ws://example.com/echo"); | 414 GURL url("ws://example.com/echo"); |
415 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 415 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
416 | 416 |
417 SendRequest(); | 417 SendRequest(); |
418 | 418 |
419 sync_callback_.WaitForResult(); | 419 sync_callback_.WaitForResult(); |
420 | 420 |
421 // WebSocketStream destruction remove its SPDY stream from the session. | 421 // WebSocketStream destruction remove its SPDY stream from the session. |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 InitSession(reads, arraysize(reads), writes, arraysize(writes), false); | 463 InitSession(reads, arraysize(reads), writes, arraysize(writes), false); |
464 | 464 |
465 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 465 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
466 delegate.SetOnReceivedHeader( | 466 delegate.SetOnReceivedHeader( |
467 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, | 467 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, |
468 base::Unretained(this))); | 468 base::Unretained(this))); |
469 delegate.SetOnReceivedData( | 469 delegate.SetOnReceivedData( |
470 base::Bind(&SpdyWebSocketStreamTest::DoClose, | 470 base::Bind(&SpdyWebSocketStreamTest::DoClose, |
471 base::Unretained(this))); | 471 base::Unretained(this))); |
472 | 472 |
473 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); | 473 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); |
474 | 474 |
475 BoundNetLog net_log; | 475 BoundNetLog net_log; |
476 GURL url("ws://example.com/echo"); | 476 GURL url("ws://example.com/echo"); |
477 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 477 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
478 | 478 |
479 SendRequest(); | 479 SendRequest(); |
480 | 480 |
481 completion_callback_.WaitForResult(); | 481 completion_callback_.WaitForResult(); |
482 | 482 |
483 // SPDY stream has already been removed from the session by Close(). | 483 // SPDY stream has already been removed from the session by Close(). |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 MockRead(SYNCHRONOUS, 0, 11) // EOF cause OnCloseSpdyStream event. | 528 MockRead(SYNCHRONOUS, 0, 11) // EOF cause OnCloseSpdyStream event. |
529 }; | 529 }; |
530 | 530 |
531 InitSession(reads, arraysize(reads), writes, arraysize(writes), true); | 531 InitSession(reads, arraysize(reads), writes, arraysize(writes), true); |
532 | 532 |
533 // Create a dummy WebSocketStream which cause ERR_IO_PENDING to another | 533 // Create a dummy WebSocketStream which cause ERR_IO_PENDING to another |
534 // WebSocketStream under test. | 534 // WebSocketStream under test. |
535 SpdyWebSocketStreamEventRecorder block_delegate((CompletionCallback())); | 535 SpdyWebSocketStreamEventRecorder block_delegate((CompletionCallback())); |
536 | 536 |
537 scoped_ptr<SpdyWebSocketStream> block_stream( | 537 scoped_ptr<SpdyWebSocketStream> block_stream( |
538 new SpdyWebSocketStream(session_.get(), &block_delegate)); | 538 new SpdyWebSocketStream(session_, &block_delegate)); |
539 BoundNetLog block_net_log; | 539 BoundNetLog block_net_log; |
540 GURL block_url("ws://example.com/block"); | 540 GURL block_url("ws://example.com/block"); |
541 ASSERT_EQ(OK, | 541 ASSERT_EQ(OK, |
542 block_stream->InitializeStream(block_url, HIGHEST, block_net_log)); | 542 block_stream->InitializeStream(block_url, HIGHEST, block_net_log)); |
543 | 543 |
544 // Create a WebSocketStream under test. | 544 // Create a WebSocketStream under test. |
545 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 545 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
546 delegate.SetOnCreated( | 546 delegate.SetOnCreated( |
547 base::Bind(&SpdyWebSocketStreamTest::DoSync, | 547 base::Bind(&SpdyWebSocketStreamTest::DoSync, |
548 base::Unretained(this))); | 548 base::Unretained(this))); |
549 delegate.SetOnReceivedHeader( | 549 delegate.SetOnReceivedHeader( |
550 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, | 550 base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame, |
551 base::Unretained(this))); | 551 base::Unretained(this))); |
552 delegate.SetOnReceivedData( | 552 delegate.SetOnReceivedData( |
553 base::Bind(&SpdyWebSocketStreamTest::DoSendClosingFrame, | 553 base::Bind(&SpdyWebSocketStreamTest::DoSendClosingFrame, |
554 base::Unretained(this))); | 554 base::Unretained(this))); |
555 | 555 |
556 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); | 556 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); |
557 BoundNetLog net_log; | 557 BoundNetLog net_log; |
558 GURL url("ws://example.com/echo"); | 558 GURL url("ws://example.com/echo"); |
559 ASSERT_EQ(ERR_IO_PENDING, websocket_stream_->InitializeStream( | 559 ASSERT_EQ(ERR_IO_PENDING, websocket_stream_->InitializeStream( |
560 url, HIGHEST, net_log)); | 560 url, HIGHEST, net_log)); |
561 | 561 |
562 // Delete the fist stream to allow create the second stream. | 562 // Delete the fist stream to allow create the second stream. |
563 block_stream.reset(); | 563 block_stream.reset(); |
564 ASSERT_EQ(OK, sync_callback_.WaitForResult()); | 564 ASSERT_EQ(OK, sync_callback_.WaitForResult()); |
565 | 565 |
566 SendRequest(); | 566 SendRequest(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 EXPECT_EQ(OK, events[7].result); | 602 EXPECT_EQ(OK, events[7].result); |
603 | 603 |
604 // EOF close SPDY session. | 604 // EOF close SPDY session. |
605 EXPECT_FALSE( | 605 EXPECT_FALSE( |
606 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); | 606 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); |
607 EXPECT_TRUE(data()->at_read_eof()); | 607 EXPECT_TRUE(data()->at_read_eof()); |
608 EXPECT_TRUE(data()->at_write_eof()); | 608 EXPECT_TRUE(data()->at_write_eof()); |
609 } | 609 } |
610 | 610 |
611 } // namespace net | 611 } // namespace net |
OLD | NEW |