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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 writes, arraysize(writes), false)); | 335 writes, arraysize(writes), false)); |
336 | 336 |
337 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 337 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
338 delegate.SetOnReceivedHeader( | 338 delegate.SetOnReceivedHeader( |
339 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, | 339 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, |
340 base::Unretained(this))); | 340 base::Unretained(this))); |
341 delegate.SetOnReceivedData( | 341 delegate.SetOnReceivedData( |
342 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendClosingFrame, | 342 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendClosingFrame, |
343 base::Unretained(this))); | 343 base::Unretained(this))); |
344 | 344 |
345 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); | 345 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); |
346 | 346 |
347 BoundNetLog net_log; | 347 BoundNetLog net_log; |
348 GURL url("ws://example.com/echo"); | 348 GURL url("ws://example.com/echo"); |
349 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 349 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
350 | 350 |
351 ASSERT_TRUE(websocket_stream_->stream_); | 351 ASSERT_TRUE(websocket_stream_->stream_.get()); |
352 | 352 |
353 SendRequest(); | 353 SendRequest(); |
354 | 354 |
355 completion_callback_.WaitForResult(); | 355 completion_callback_.WaitForResult(); |
356 | 356 |
357 EXPECT_EQ(stream_id_, created_stream_id_); | 357 EXPECT_EQ(stream_id_, created_stream_id_); |
358 | 358 |
359 websocket_stream_.reset(); | 359 websocket_stream_.reset(); |
360 | 360 |
361 const std::vector<SpdyWebSocketStreamEvent>& events = | 361 const std::vector<SpdyWebSocketStreamEvent>& events = |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 writes, arraysize(writes), false)); | 408 writes, arraysize(writes), false)); |
409 | 409 |
410 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 410 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
411 delegate.SetOnReceivedHeader( | 411 delegate.SetOnReceivedHeader( |
412 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, | 412 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, |
413 base::Unretained(this))); | 413 base::Unretained(this))); |
414 delegate.SetOnReceivedData( | 414 delegate.SetOnReceivedData( |
415 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSync, | 415 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSync, |
416 base::Unretained(this))); | 416 base::Unretained(this))); |
417 | 417 |
418 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); | 418 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); |
419 | 419 |
420 BoundNetLog net_log; | 420 BoundNetLog net_log; |
421 GURL url("ws://example.com/echo"); | 421 GURL url("ws://example.com/echo"); |
422 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 422 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
423 | 423 |
424 SendRequest(); | 424 SendRequest(); |
425 | 425 |
426 sync_callback_.WaitForResult(); | 426 sync_callback_.WaitForResult(); |
427 | 427 |
428 // WebSocketStream destruction remove its SPDY stream from the session. | 428 // WebSocketStream destruction remove its SPDY stream from the session. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 writes, arraysize(writes), false)); | 471 writes, arraysize(writes), false)); |
472 | 472 |
473 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 473 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
474 delegate.SetOnReceivedHeader( | 474 delegate.SetOnReceivedHeader( |
475 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, | 475 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, |
476 base::Unretained(this))); | 476 base::Unretained(this))); |
477 delegate.SetOnReceivedData( | 477 delegate.SetOnReceivedData( |
478 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoClose, | 478 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoClose, |
479 base::Unretained(this))); | 479 base::Unretained(this))); |
480 | 480 |
481 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); | 481 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); |
482 | 482 |
483 BoundNetLog net_log; | 483 BoundNetLog net_log; |
484 GURL url("ws://example.com/echo"); | 484 GURL url("ws://example.com/echo"); |
485 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); | 485 ASSERT_EQ(OK, websocket_stream_->InitializeStream(url, HIGHEST, net_log)); |
486 | 486 |
487 SendRequest(); | 487 SendRequest(); |
488 | 488 |
489 completion_callback_.WaitForResult(); | 489 completion_callback_.WaitForResult(); |
490 | 490 |
491 // SPDY stream has already been removed from the session by Close(). | 491 // SPDY stream has already been removed from the session by Close(). |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 }; | 537 }; |
538 | 538 |
539 EXPECT_EQ(OK, InitSession(reads, arraysize(reads), | 539 EXPECT_EQ(OK, InitSession(reads, arraysize(reads), |
540 writes, arraysize(writes), true)); | 540 writes, arraysize(writes), true)); |
541 | 541 |
542 // Create a dummy WebSocketStream which cause ERR_IO_PENDING to another | 542 // Create a dummy WebSocketStream which cause ERR_IO_PENDING to another |
543 // WebSocketStream under test. | 543 // WebSocketStream under test. |
544 SpdyWebSocketStreamEventRecorder block_delegate((CompletionCallback())); | 544 SpdyWebSocketStreamEventRecorder block_delegate((CompletionCallback())); |
545 | 545 |
546 scoped_ptr<SpdyWebSocketStream> block_stream( | 546 scoped_ptr<SpdyWebSocketStream> block_stream( |
547 new SpdyWebSocketStream(session_, &block_delegate)); | 547 new SpdyWebSocketStream(session_.get(), &block_delegate)); |
548 BoundNetLog block_net_log; | 548 BoundNetLog block_net_log; |
549 GURL block_url("ws://example.com/block"); | 549 GURL block_url("ws://example.com/block"); |
550 ASSERT_EQ(OK, | 550 ASSERT_EQ(OK, |
551 block_stream->InitializeStream(block_url, HIGHEST, block_net_log)); | 551 block_stream->InitializeStream(block_url, HIGHEST, block_net_log)); |
552 | 552 |
553 // Create a WebSocketStream under test. | 553 // Create a WebSocketStream under test. |
554 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); | 554 SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback()); |
555 delegate.SetOnCreated( | 555 delegate.SetOnCreated( |
556 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSync, | 556 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSync, |
557 base::Unretained(this))); | 557 base::Unretained(this))); |
558 delegate.SetOnReceivedHeader( | 558 delegate.SetOnReceivedHeader( |
559 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, | 559 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendHelloFrame, |
560 base::Unretained(this))); | 560 base::Unretained(this))); |
561 delegate.SetOnReceivedData( | 561 delegate.SetOnReceivedData( |
562 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendClosingFrame, | 562 base::Bind(&SpdyWebSocketStreamSpdy3Test::DoSendClosingFrame, |
563 base::Unretained(this))); | 563 base::Unretained(this))); |
564 | 564 |
565 websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate)); | 565 websocket_stream_.reset(new SpdyWebSocketStream(session_.get(), &delegate)); |
566 BoundNetLog net_log; | 566 BoundNetLog net_log; |
567 GURL url("ws://example.com/echo"); | 567 GURL url("ws://example.com/echo"); |
568 ASSERT_EQ(ERR_IO_PENDING, websocket_stream_->InitializeStream( | 568 ASSERT_EQ(ERR_IO_PENDING, websocket_stream_->InitializeStream( |
569 url, HIGHEST, net_log)); | 569 url, HIGHEST, net_log)); |
570 | 570 |
571 // Delete the first stream to allow create the second stream. | 571 // Delete the first stream to allow create the second stream. |
572 block_stream.reset(); | 572 block_stream.reset(); |
573 ASSERT_EQ(OK, sync_callback_.WaitForResult()); | 573 ASSERT_EQ(OK, sync_callback_.WaitForResult()); |
574 | 574 |
575 SendRequest(); | 575 SendRequest(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 EXPECT_EQ(OK, events[7].result); | 611 EXPECT_EQ(OK, events[7].result); |
612 | 612 |
613 // EOF close SPDY session. | 613 // EOF close SPDY session. |
614 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession( | 614 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession( |
615 host_port_proxy_pair_)); | 615 host_port_proxy_pair_)); |
616 EXPECT_TRUE(data()->at_read_eof()); | 616 EXPECT_TRUE(data()->at_read_eof()); |
617 EXPECT_TRUE(data()->at_write_eof()); | 617 EXPECT_TRUE(data()->at_write_eof()); |
618 } | 618 } |
619 | 619 |
620 } // namespace net | 620 } // namespace net |
OLD | NEW |