| 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/quic/quic_http_stream.h" | 5 #include "net/quic/quic_http_stream.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 | 53 |
| 54 using testing::_; | 54 using testing::_; |
| 55 using testing::AnyNumber; | 55 using testing::AnyNumber; |
| 56 using testing::Return; | 56 using testing::Return; |
| 57 | 57 |
| 58 namespace net { | 58 namespace net { |
| 59 namespace test { | 59 namespace test { |
| 60 namespace { | 60 namespace { |
| 61 | 61 |
| 62 const char kUploadData[] = "Really nifty data!"; | 62 const char kUploadData[] = "Really nifty data!"; |
| 63 const char kDefaultServerHostName[] = "www.google.com"; | 63 const char kDefaultServerHostName[] = "www.example.org"; |
| 64 const uint16_t kDefaultServerPort = 80; | 64 const uint16_t kDefaultServerPort = 80; |
| 65 | 65 |
| 66 class TestQuicConnection : public QuicConnection { | 66 class TestQuicConnection : public QuicConnection { |
| 67 public: | 67 public: |
| 68 TestQuicConnection(const QuicVersionVector& versions, | 68 TestQuicConnection(const QuicVersionVector& versions, |
| 69 QuicConnectionId connection_id, | 69 QuicConnectionId connection_id, |
| 70 IPEndPoint address, | 70 IPEndPoint address, |
| 71 QuicChromiumConnectionHelper* helper, | 71 QuicChromiumConnectionHelper* helper, |
| 72 QuicPacketWriter* writer) | 72 QuicPacketWriter* writer) |
| 73 : QuicConnection(connection_id, | 73 : QuicConnection(connection_id, |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 } | 372 } |
| 373 | 373 |
| 374 TEST_P(QuicHttpStreamTest, GetRequest) { | 374 TEST_P(QuicHttpStreamTest, GetRequest) { |
| 375 SetRequest("GET", "/", DEFAULT_PRIORITY); | 375 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 376 size_t spdy_request_header_frame_length; | 376 size_t spdy_request_header_frame_length; |
| 377 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 377 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
| 378 &spdy_request_header_frame_length)); | 378 &spdy_request_header_frame_length)); |
| 379 Initialize(); | 379 Initialize(); |
| 380 | 380 |
| 381 request_.method = "GET"; | 381 request_.method = "GET"; |
| 382 request_.url = GURL("http://www.google.com/"); | 382 request_.url = GURL("http://www.example.org/"); |
| 383 | 383 |
| 384 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 384 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 385 callback_.callback())); | 385 callback_.callback())); |
| 386 EXPECT_EQ(OK, | 386 EXPECT_EQ(OK, |
| 387 stream_->SendRequest(headers_, &response_, callback_.callback())); | 387 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 388 | 388 |
| 389 // Ack the request. | 389 // Ack the request. |
| 390 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 390 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
| 391 | 391 |
| 392 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 392 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 421 | 421 |
| 422 // Regression test for http://crbug.com/288128 | 422 // Regression test for http://crbug.com/288128 |
| 423 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { | 423 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
| 424 SetRequest("GET", "/", DEFAULT_PRIORITY); | 424 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 425 size_t spdy_request_headers_frame_length; | 425 size_t spdy_request_headers_frame_length; |
| 426 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 426 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
| 427 &spdy_request_headers_frame_length)); | 427 &spdy_request_headers_frame_length)); |
| 428 Initialize(); | 428 Initialize(); |
| 429 | 429 |
| 430 request_.method = "GET"; | 430 request_.method = "GET"; |
| 431 request_.url = GURL("http://www.google.com/"); | 431 request_.url = GURL("http://www.example.org/"); |
| 432 | 432 |
| 433 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 433 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 434 callback_.callback())); | 434 callback_.callback())); |
| 435 EXPECT_EQ(OK, | 435 EXPECT_EQ(OK, |
| 436 stream_->SendRequest(headers_, &response_, callback_.callback())); | 436 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 437 | 437 |
| 438 // Ack the request. | 438 // Ack the request. |
| 439 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 439 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
| 440 | 440 |
| 441 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 441 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 471 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 471 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
| 472 stream_->GetTotalReceivedBytes()); | 472 stream_->GetTotalReceivedBytes()); |
| 473 } | 473 } |
| 474 | 474 |
| 475 // Regression test for http://crbug.com/409101 | 475 // Regression test for http://crbug.com/409101 |
| 476 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendRequest) { | 476 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendRequest) { |
| 477 SetRequest("GET", "/", DEFAULT_PRIORITY); | 477 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 478 Initialize(); | 478 Initialize(); |
| 479 | 479 |
| 480 request_.method = "GET"; | 480 request_.method = "GET"; |
| 481 request_.url = GURL("http://www.google.com/"); | 481 request_.url = GURL("http://www.example.org/"); |
| 482 | 482 |
| 483 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 483 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 484 callback_.callback())); | 484 callback_.callback())); |
| 485 | 485 |
| 486 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 486 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
| 487 | 487 |
| 488 EXPECT_EQ(ERR_CONNECTION_CLOSED, | 488 EXPECT_EQ(ERR_CONNECTION_CLOSED, |
| 489 stream_->SendRequest(headers_, &response_, callback_.callback())); | 489 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 490 | 490 |
| 491 EXPECT_EQ(0, stream_->GetTotalSentBytes()); | 491 EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
| 492 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 492 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
| 493 } | 493 } |
| 494 | 494 |
| 495 // Regression test for http://crbug.com/584441 | 495 // Regression test for http://crbug.com/584441 |
| 496 TEST_P(QuicHttpStreamTest, GetSSLInfoAfterSessionClosed) { | 496 TEST_P(QuicHttpStreamTest, GetSSLInfoAfterSessionClosed) { |
| 497 SetRequest("GET", "/", DEFAULT_PRIORITY); | 497 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 498 Initialize(); | 498 Initialize(); |
| 499 | 499 |
| 500 request_.method = "GET"; | 500 request_.method = "GET"; |
| 501 request_.url = GURL("http://www.google.com/"); | 501 request_.url = GURL("http://www.example.org/"); |
| 502 | 502 |
| 503 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 503 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 504 callback_.callback())); | 504 callback_.callback())); |
| 505 | 505 |
| 506 SSLInfo ssl_info; | 506 SSLInfo ssl_info; |
| 507 EXPECT_FALSE(ssl_info.is_valid()); | 507 EXPECT_FALSE(ssl_info.is_valid()); |
| 508 stream_->GetSSLInfo(&ssl_info); | 508 stream_->GetSSLInfo(&ssl_info); |
| 509 EXPECT_TRUE(ssl_info.is_valid()); | 509 EXPECT_TRUE(ssl_info.is_valid()); |
| 510 | 510 |
| 511 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 511 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
| 512 | 512 |
| 513 SSLInfo ssl_info2; | 513 SSLInfo ssl_info2; |
| 514 stream_->GetSSLInfo(&ssl_info2); | 514 stream_->GetSSLInfo(&ssl_info2); |
| 515 EXPECT_TRUE(ssl_info2.is_valid()); | 515 EXPECT_TRUE(ssl_info2.is_valid()); |
| 516 } | 516 } |
| 517 | 517 |
| 518 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { | 518 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { |
| 519 SetRequest("GET", "/", DEFAULT_PRIORITY); | 519 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 520 size_t spdy_request_headers_frame_length; | 520 size_t spdy_request_headers_frame_length; |
| 521 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 521 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
| 522 &spdy_request_headers_frame_length)); | 522 &spdy_request_headers_frame_length)); |
| 523 AddWrite(ConstructAckAndRstStreamPacket(2)); | 523 AddWrite(ConstructAckAndRstStreamPacket(2)); |
| 524 use_closing_stream_ = true; | 524 use_closing_stream_ = true; |
| 525 Initialize(); | 525 Initialize(); |
| 526 | 526 |
| 527 request_.method = "GET"; | 527 request_.method = "GET"; |
| 528 request_.url = GURL("http://www.google.com/"); | 528 request_.url = GURL("http://www.example.org/"); |
| 529 | 529 |
| 530 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 530 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 531 callback_.callback())); | 531 callback_.callback())); |
| 532 EXPECT_EQ(OK, | 532 EXPECT_EQ(OK, |
| 533 stream_->SendRequest(headers_, &response_, callback_.callback())); | 533 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 534 | 534 |
| 535 // Ack the request. | 535 // Ack the request. |
| 536 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 536 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
| 537 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 537 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
| 538 | 538 |
| 539 EXPECT_TRUE(QuicHttpStreamPeer::WasHandshakeConfirmed(stream_.get())); | 539 EXPECT_TRUE(QuicHttpStreamPeer::WasHandshakeConfirmed(stream_.get())); |
| 540 stream_->OnClose(QUIC_PEER_GOING_AWAY); | 540 stream_->OnClose(QUIC_PEER_GOING_AWAY); |
| 541 | 541 |
| 542 NetErrorDetails details; | 542 NetErrorDetails details; |
| 543 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); | 543 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); |
| 544 stream_->PopulateNetErrorDetails(&details); | 544 stream_->PopulateNetErrorDetails(&details); |
| 545 EXPECT_EQ(QUIC_PEER_GOING_AWAY, details.quic_connection_error); | 545 EXPECT_EQ(QUIC_PEER_GOING_AWAY, details.quic_connection_error); |
| 546 } | 546 } |
| 547 | 547 |
| 548 TEST_P(QuicHttpStreamTest, DoNotLogGranularQuicErrorIfHandshakeNotConfirmed) { | 548 TEST_P(QuicHttpStreamTest, DoNotLogGranularQuicErrorIfHandshakeNotConfirmed) { |
| 549 SetRequest("GET", "/", DEFAULT_PRIORITY); | 549 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 550 size_t spdy_request_headers_frame_length; | 550 size_t spdy_request_headers_frame_length; |
| 551 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 551 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
| 552 &spdy_request_headers_frame_length)); | 552 &spdy_request_headers_frame_length)); |
| 553 AddWrite(ConstructAckAndRstStreamPacket(2)); | 553 AddWrite(ConstructAckAndRstStreamPacket(2)); |
| 554 use_closing_stream_ = true; | 554 use_closing_stream_ = true; |
| 555 Initialize(); | 555 Initialize(); |
| 556 | 556 |
| 557 request_.method = "GET"; | 557 request_.method = "GET"; |
| 558 request_.url = GURL("http://www.google.com/"); | 558 request_.url = GURL("http://www.example.org/"); |
| 559 | 559 |
| 560 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 560 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 561 callback_.callback())); | 561 callback_.callback())); |
| 562 EXPECT_EQ(OK, | 562 EXPECT_EQ(OK, |
| 563 stream_->SendRequest(headers_, &response_, callback_.callback())); | 563 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 564 | 564 |
| 565 // Ack the request. | 565 // Ack the request. |
| 566 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 566 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
| 567 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 567 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
| 568 | 568 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 582 | 582 |
| 583 // Regression test for http://crbug.com/409871 | 583 // Regression test for http://crbug.com/409871 |
| 584 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { | 584 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { |
| 585 SetRequest("GET", "/", DEFAULT_PRIORITY); | 585 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 586 size_t spdy_request_headers_frame_length; | 586 size_t spdy_request_headers_frame_length; |
| 587 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 587 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
| 588 &spdy_request_headers_frame_length)); | 588 &spdy_request_headers_frame_length)); |
| 589 Initialize(); | 589 Initialize(); |
| 590 | 590 |
| 591 request_.method = "GET"; | 591 request_.method = "GET"; |
| 592 request_.url = GURL("http://www.google.com/"); | 592 request_.url = GURL("http://www.example.org/"); |
| 593 | 593 |
| 594 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 594 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 595 callback_.callback())); | 595 callback_.callback())); |
| 596 | 596 |
| 597 EXPECT_EQ(OK, | 597 EXPECT_EQ(OK, |
| 598 stream_->SendRequest(headers_, &response_, callback_.callback())); | 598 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 599 | 599 |
| 600 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 600 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
| 601 | 601 |
| 602 EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); | 602 EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 616 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); | 616 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); |
| 617 AddWrite(ConstructAckPacket(3, 3, 1)); | 617 AddWrite(ConstructAckPacket(3, 3, 1)); |
| 618 | 618 |
| 619 Initialize(); | 619 Initialize(); |
| 620 | 620 |
| 621 std::vector<scoped_ptr<UploadElementReader>> element_readers; | 621 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 622 element_readers.push_back(make_scoped_ptr( | 622 element_readers.push_back(make_scoped_ptr( |
| 623 new UploadBytesElementReader(kUploadData, strlen(kUploadData)))); | 623 new UploadBytesElementReader(kUploadData, strlen(kUploadData)))); |
| 624 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | 624 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); |
| 625 request_.method = "POST"; | 625 request_.method = "POST"; |
| 626 request_.url = GURL("http://www.google.com/"); | 626 request_.url = GURL("http://www.example.org/"); |
| 627 request_.upload_data_stream = &upload_data_stream; | 627 request_.upload_data_stream = &upload_data_stream; |
| 628 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); | 628 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); |
| 629 | 629 |
| 630 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 630 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 631 callback_.callback())); | 631 callback_.callback())); |
| 632 EXPECT_EQ(OK, | 632 EXPECT_EQ(OK, |
| 633 stream_->SendRequest(headers_, &response_, callback_.callback())); | 633 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 634 | 634 |
| 635 // Ack both packets in the request. | 635 // Ack both packets in the request. |
| 636 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 636 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); | 678 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
| 679 AddWrite( | 679 AddWrite( |
| 680 ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, kUploadData)); | 680 ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, kUploadData)); |
| 681 AddWrite(ConstructAckPacket(4, 3, 1)); | 681 AddWrite(ConstructAckPacket(4, 3, 1)); |
| 682 Initialize(); | 682 Initialize(); |
| 683 | 683 |
| 684 ChunkedUploadDataStream upload_data_stream(0); | 684 ChunkedUploadDataStream upload_data_stream(0); |
| 685 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 685 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
| 686 | 686 |
| 687 request_.method = "POST"; | 687 request_.method = "POST"; |
| 688 request_.url = GURL("http://www.google.com/"); | 688 request_.url = GURL("http://www.example.org/"); |
| 689 request_.upload_data_stream = &upload_data_stream; | 689 request_.upload_data_stream = &upload_data_stream; |
| 690 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 690 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
| 691 TestCompletionCallback().callback())); | 691 TestCompletionCallback().callback())); |
| 692 | 692 |
| 693 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 693 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 694 callback_.callback())); | 694 callback_.callback())); |
| 695 ASSERT_EQ(ERR_IO_PENDING, | 695 ASSERT_EQ(ERR_IO_PENDING, |
| 696 stream_->SendRequest(headers_, &response_, callback_.callback())); | 696 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 697 | 697 |
| 698 upload_data_stream.AppendData(kUploadData, chunk_size, true); | 698 upload_data_stream.AppendData(kUploadData, chunk_size, true); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 745 &spdy_request_headers_frame_length)); | 745 &spdy_request_headers_frame_length)); |
| 746 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); | 746 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
| 747 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); | 747 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); |
| 748 AddWrite(ConstructAckPacket(4, 3, 1)); | 748 AddWrite(ConstructAckPacket(4, 3, 1)); |
| 749 Initialize(); | 749 Initialize(); |
| 750 | 750 |
| 751 ChunkedUploadDataStream upload_data_stream(0); | 751 ChunkedUploadDataStream upload_data_stream(0); |
| 752 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 752 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
| 753 | 753 |
| 754 request_.method = "POST"; | 754 request_.method = "POST"; |
| 755 request_.url = GURL("http://www.google.com/"); | 755 request_.url = GURL("http://www.example.org/"); |
| 756 request_.upload_data_stream = &upload_data_stream; | 756 request_.upload_data_stream = &upload_data_stream; |
| 757 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 757 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
| 758 TestCompletionCallback().callback())); | 758 TestCompletionCallback().callback())); |
| 759 | 759 |
| 760 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 760 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 761 callback_.callback())); | 761 callback_.callback())); |
| 762 ASSERT_EQ(ERR_IO_PENDING, | 762 ASSERT_EQ(ERR_IO_PENDING, |
| 763 stream_->SendRequest(headers_, &response_, callback_.callback())); | 763 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 764 | 764 |
| 765 upload_data_stream.AppendData(nullptr, 0, true); | 765 upload_data_stream.AppendData(nullptr, 0, true); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 size_t spdy_request_headers_frame_length; | 807 size_t spdy_request_headers_frame_length; |
| 808 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, | 808 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
| 809 &spdy_request_headers_frame_length)); | 809 &spdy_request_headers_frame_length)); |
| 810 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); | 810 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); |
| 811 AddWrite(ConstructAckPacket(3, 3, 1)); | 811 AddWrite(ConstructAckPacket(3, 3, 1)); |
| 812 Initialize(); | 812 Initialize(); |
| 813 | 813 |
| 814 ChunkedUploadDataStream upload_data_stream(0); | 814 ChunkedUploadDataStream upload_data_stream(0); |
| 815 | 815 |
| 816 request_.method = "POST"; | 816 request_.method = "POST"; |
| 817 request_.url = GURL("http://www.google.com/"); | 817 request_.url = GURL("http://www.example.org/"); |
| 818 request_.upload_data_stream = &upload_data_stream; | 818 request_.upload_data_stream = &upload_data_stream; |
| 819 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 819 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
| 820 TestCompletionCallback().callback())); | 820 TestCompletionCallback().callback())); |
| 821 | 821 |
| 822 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 822 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 823 callback_.callback())); | 823 callback_.callback())); |
| 824 ASSERT_EQ(ERR_IO_PENDING, | 824 ASSERT_EQ(ERR_IO_PENDING, |
| 825 stream_->SendRequest(headers_, &response_, callback_.callback())); | 825 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 826 | 826 |
| 827 upload_data_stream.AppendData(nullptr, 0, true); | 827 upload_data_stream.AppendData(nullptr, 0, true); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 TEST_P(QuicHttpStreamTest, DestroyedEarly) { | 867 TEST_P(QuicHttpStreamTest, DestroyedEarly) { |
| 868 SetRequest("GET", "/", DEFAULT_PRIORITY); | 868 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 869 size_t spdy_request_headers_frame_length; | 869 size_t spdy_request_headers_frame_length; |
| 870 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 870 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
| 871 &spdy_request_headers_frame_length)); | 871 &spdy_request_headers_frame_length)); |
| 872 AddWrite(ConstructAckAndRstStreamPacket(2)); | 872 AddWrite(ConstructAckAndRstStreamPacket(2)); |
| 873 use_closing_stream_ = true; | 873 use_closing_stream_ = true; |
| 874 Initialize(); | 874 Initialize(); |
| 875 | 875 |
| 876 request_.method = "GET"; | 876 request_.method = "GET"; |
| 877 request_.url = GURL("http://www.google.com/"); | 877 request_.url = GURL("http://www.example.org/"); |
| 878 | 878 |
| 879 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 879 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 880 callback_.callback())); | 880 callback_.callback())); |
| 881 EXPECT_EQ(OK, | 881 EXPECT_EQ(OK, |
| 882 stream_->SendRequest(headers_, &response_, callback_.callback())); | 882 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 883 | 883 |
| 884 // Ack the request. | 884 // Ack the request. |
| 885 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 885 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
| 886 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 886 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
| 887 | 887 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 905 TEST_P(QuicHttpStreamTest, Priority) { | 905 TEST_P(QuicHttpStreamTest, Priority) { |
| 906 SetRequest("GET", "/", MEDIUM); | 906 SetRequest("GET", "/", MEDIUM); |
| 907 size_t spdy_request_headers_frame_length; | 907 size_t spdy_request_headers_frame_length; |
| 908 AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM, | 908 AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM, |
| 909 &spdy_request_headers_frame_length)); | 909 &spdy_request_headers_frame_length)); |
| 910 AddWrite(ConstructAckAndRstStreamPacket(2)); | 910 AddWrite(ConstructAckAndRstStreamPacket(2)); |
| 911 use_closing_stream_ = true; | 911 use_closing_stream_ = true; |
| 912 Initialize(); | 912 Initialize(); |
| 913 | 913 |
| 914 request_.method = "GET"; | 914 request_.method = "GET"; |
| 915 request_.url = GURL("http://www.google.com/"); | 915 request_.url = GURL("http://www.example.org/"); |
| 916 | 916 |
| 917 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, | 917 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, |
| 918 callback_.callback())); | 918 callback_.callback())); |
| 919 | 919 |
| 920 // Check that priority is highest. | 920 // Check that priority is highest. |
| 921 QuicChromiumClientStream* reliable_stream = | 921 QuicChromiumClientStream* reliable_stream = |
| 922 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | 922 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); |
| 923 DCHECK(reliable_stream); | 923 DCHECK(reliable_stream); |
| 924 DCHECK_EQ(kV3HighestPriority, reliable_stream->Priority()); | 924 DCHECK_EQ(kV3HighestPriority, reliable_stream->Priority()); |
| 925 | 925 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 954 // Regression test for http://crbug.com/294870 | 954 // Regression test for http://crbug.com/294870 |
| 955 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { | 955 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { |
| 956 SetRequest("GET", "/", MEDIUM); | 956 SetRequest("GET", "/", MEDIUM); |
| 957 use_closing_stream_ = true; | 957 use_closing_stream_ = true; |
| 958 | 958 |
| 959 AddWrite(ConstructRstStreamPacket(1)); | 959 AddWrite(ConstructRstStreamPacket(1)); |
| 960 | 960 |
| 961 Initialize(); | 961 Initialize(); |
| 962 | 962 |
| 963 request_.method = "GET"; | 963 request_.method = "GET"; |
| 964 request_.url = GURL("http://www.google.com/"); | 964 request_.url = GURL("http://www.example.org/"); |
| 965 | 965 |
| 966 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, | 966 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, |
| 967 callback_.callback())); | 967 callback_.callback())); |
| 968 | 968 |
| 969 // Check that priority is highest. | 969 // Check that priority is highest. |
| 970 QuicChromiumClientStream* reliable_stream = | 970 QuicChromiumClientStream* reliable_stream = |
| 971 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | 971 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); |
| 972 DCHECK(reliable_stream); | 972 DCHECK(reliable_stream); |
| 973 QuicChromiumClientStream::Delegate* delegate = reliable_stream->GetDelegate(); | 973 QuicChromiumClientStream::Delegate* delegate = reliable_stream->GetDelegate(); |
| 974 DCHECK(delegate); | 974 DCHECK(delegate); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 985 } | 985 } |
| 986 | 986 |
| 987 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendHeadersComplete) { | 987 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendHeadersComplete) { |
| 988 SetRequest("POST", "/", DEFAULT_PRIORITY); | 988 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 989 AddWrite(SYNCHRONOUS, ERR_FAILED); | 989 AddWrite(SYNCHRONOUS, ERR_FAILED); |
| 990 Initialize(); | 990 Initialize(); |
| 991 | 991 |
| 992 ChunkedUploadDataStream upload_data_stream(0); | 992 ChunkedUploadDataStream upload_data_stream(0); |
| 993 | 993 |
| 994 request_.method = "POST"; | 994 request_.method = "POST"; |
| 995 request_.url = GURL("http://www.google.com/"); | 995 request_.url = GURL("http://www.example.org/"); |
| 996 request_.upload_data_stream = &upload_data_stream; | 996 request_.upload_data_stream = &upload_data_stream; |
| 997 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 997 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
| 998 TestCompletionCallback().callback())); | 998 TestCompletionCallback().callback())); |
| 999 | 999 |
| 1000 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 1000 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 1001 callback_.callback())); | 1001 callback_.callback())); |
| 1002 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, | 1002 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, |
| 1003 stream_->SendRequest(headers_, &response_, callback_.callback())); | 1003 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 1004 } | 1004 } |
| 1005 | 1005 |
| 1006 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { | 1006 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { |
| 1007 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1007 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1008 size_t spdy_request_headers_frame_length; | 1008 size_t spdy_request_headers_frame_length; |
| 1009 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, | 1009 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
| 1010 &spdy_request_headers_frame_length)); | 1010 &spdy_request_headers_frame_length)); |
| 1011 AddWrite(SYNCHRONOUS, ERR_FAILED); | 1011 AddWrite(SYNCHRONOUS, ERR_FAILED); |
| 1012 Initialize(); | 1012 Initialize(); |
| 1013 | 1013 |
| 1014 ChunkedUploadDataStream upload_data_stream(0); | 1014 ChunkedUploadDataStream upload_data_stream(0); |
| 1015 size_t chunk_size = strlen(kUploadData); | 1015 size_t chunk_size = strlen(kUploadData); |
| 1016 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 1016 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
| 1017 | 1017 |
| 1018 request_.method = "POST"; | 1018 request_.method = "POST"; |
| 1019 request_.url = GURL("http://www.google.com/"); | 1019 request_.url = GURL("http://www.example.org/"); |
| 1020 request_.upload_data_stream = &upload_data_stream; | 1020 request_.upload_data_stream = &upload_data_stream; |
| 1021 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 1021 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
| 1022 TestCompletionCallback().callback())); | 1022 TestCompletionCallback().callback())); |
| 1023 | 1023 |
| 1024 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 1024 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
| 1025 callback_.callback())); | 1025 callback_.callback())); |
| 1026 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, | 1026 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, |
| 1027 stream_->SendRequest(headers_, &response_, callback_.callback())); | 1027 stream_->SendRequest(headers_, &response_, callback_.callback())); |
| 1028 } | 1028 } |
| 1029 | 1029 |
| 1030 } // namespace test | 1030 } // namespace test |
| 1031 } // namespace net | 1031 } // namespace net |
| OLD | NEW |