| Index: net/quic/chromium/quic_http_stream_test.cc
|
| diff --git a/net/quic/chromium/quic_http_stream_test.cc b/net/quic/chromium/quic_http_stream_test.cc
|
| index 56ab9fd11bfc41f300bb42cbd68ab91b429dd009..f9b9a3b8ce0b26106da5dd6a09599114ffbdafda 100644
|
| --- a/net/quic/chromium/quic_http_stream_test.cc
|
| +++ b/net/quic/chromium/quic_http_stream_test.cc
|
| @@ -105,11 +105,6 @@ class AutoClosingStream : public QuicHttpStream {
|
| std::unique_ptr<QuicChromiumClientSession::Handle> session)
|
| : QuicHttpStream(std::move(session)) {}
|
|
|
| - void OnInitialHeadersAvailable(const SpdyHeaderBlock& headers,
|
| - size_t frame_len) override {
|
| - Close(false);
|
| - }
|
| -
|
| void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers,
|
| size_t frame_len) override {
|
| Close(false);
|
| @@ -183,6 +178,9 @@ class QuicHttpStreamPeer {
|
| };
|
|
|
| class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
|
| + public:
|
| + void CloseStream(QuicHttpStream* stream, int /*rv*/) { stream->Close(false); }
|
| +
|
| protected:
|
| static const bool kFin = true;
|
| static const bool kIncludeVersion = true;
|
| @@ -1152,10 +1150,8 @@ TEST_P(QuicHttpStreamTest, SendPostRequest) {
|
| ProcessPacket(ConstructResponseHeadersPacket(
|
| 2, !kFin, &spdy_response_headers_frame_length));
|
|
|
| - // The headers have arrived, but they are delivered asynchronously.
|
| - EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()),
|
| - IsError(ERR_IO_PENDING));
|
| - EXPECT_THAT(callback_.WaitForResult(), IsOk());
|
| + // The headers have already arrived.
|
| + EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()), IsOk());
|
| ASSERT_TRUE(response_.headers.get());
|
| EXPECT_EQ(200, response_.headers->response_code());
|
| EXPECT_TRUE(response_.headers->HasHeaderValue("Content-Type", "text/plain"));
|
| @@ -1225,10 +1221,8 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) {
|
| ProcessPacket(ConstructResponseHeadersPacket(
|
| 2, !kFin, &spdy_response_headers_frame_length));
|
|
|
| - // The headers have arrived, but they are delivered asynchronously
|
| - EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()),
|
| - IsError(ERR_IO_PENDING));
|
| - EXPECT_THAT(callback_.WaitForResult(), IsOk());
|
| + // The headers have already arrived.
|
| + EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()), IsOk());
|
| ASSERT_TRUE(response_.headers.get());
|
| EXPECT_EQ(200, response_.headers->response_code());
|
| EXPECT_TRUE(response_.headers->HasHeaderValue("Content-Type", "text/plain"));
|
| @@ -1298,10 +1292,8 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) {
|
| ProcessPacket(ConstructResponseHeadersPacket(
|
| 2, !kFin, &spdy_response_headers_frame_length));
|
|
|
| - // The headers have arrived, but they are delivered asynchronously
|
| - EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()),
|
| - IsError(ERR_IO_PENDING));
|
| - EXPECT_THAT(callback_.WaitForResult(), IsOk());
|
| + // The headers have already arrived.
|
| + EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()), IsOk());
|
| ASSERT_TRUE(response_.headers.get());
|
| EXPECT_EQ(200, response_.headers->response_code());
|
| EXPECT_TRUE(response_.headers->HasHeaderValue("Content-Type", "text/plain"));
|
| @@ -1366,10 +1358,8 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) {
|
| ProcessPacket(ConstructResponseHeadersPacket(
|
| 2, !kFin, &spdy_response_headers_frame_length));
|
|
|
| - // The headers have arrived, but they are delivered asynchronously
|
| - EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()),
|
| - IsError(ERR_IO_PENDING));
|
| - EXPECT_THAT(callback_.WaitForResult(), IsOk());
|
| + // The headers have already arrived.
|
| + EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()), IsOk());
|
| ASSERT_TRUE(response_.headers.get());
|
| EXPECT_EQ(200, response_.headers->response_code());
|
| EXPECT_TRUE(response_.headers->HasHeaderValue("Content-Type", "text/plain"));
|
| @@ -1420,13 +1410,16 @@ TEST_P(QuicHttpStreamTest, DestroyedEarly) {
|
|
|
| // Ack the request.
|
| ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
|
| - EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()),
|
| + EXPECT_THAT(stream_->ReadResponseHeaders(
|
| + base::Bind(&QuicHttpStreamTest::CloseStream,
|
| + base::Unretained(this), stream_.get())),
|
| IsError(ERR_IO_PENDING));
|
|
|
| // Send the response with a body.
|
| SetResponse("404 OK", "hello world!");
|
| // In the course of processing this packet, the QuicHttpStream close itself.
|
| - ProcessPacket(ConstructResponseHeadersPacket(2, kFin, nullptr));
|
| + size_t response_size = 0;
|
| + ProcessPacket(ConstructResponseHeadersPacket(2, kFin, &response_size));
|
|
|
| base::RunLoop().RunUntilIdle();
|
|
|
| @@ -1436,8 +1429,9 @@ TEST_P(QuicHttpStreamTest, DestroyedEarly) {
|
| // headers and payload.
|
| EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length),
|
| stream_->GetTotalSentBytes());
|
| - // Zero since the stream is closed before processing the headers.
|
| - EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
|
| + // The stream was closed after receiving the headers.
|
| + EXPECT_EQ(static_cast<int64_t>(response_size),
|
| + stream_->GetTotalReceivedBytes());
|
| }
|
|
|
| TEST_P(QuicHttpStreamTest, Priority) {
|
| @@ -1448,7 +1442,6 @@ TEST_P(QuicHttpStreamTest, Priority) {
|
| AddWrite(InnerConstructRequestHeadersPacket(
|
| 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, MEDIUM,
|
| &spdy_request_headers_frame_length, &header_stream_offset));
|
| - AddWrite(ConstructAckAndRstStreamPacket(3));
|
| use_closing_stream_ = true;
|
| Initialize();
|
|
|
| @@ -1478,10 +1471,10 @@ TEST_P(QuicHttpStreamTest, Priority) {
|
|
|
| // Send the response with a body.
|
| SetResponse("404 OK", "hello world!");
|
| - // In the course of processing this packet, the QuicHttpStream close itself.
|
| - ProcessPacket(ConstructResponseHeadersPacket(2, kFin, nullptr));
|
| + size_t response_size = 0;
|
| + ProcessPacket(ConstructResponseHeadersPacket(2, kFin, &response_size));
|
|
|
| - base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(OK, callback_.WaitForResult());
|
|
|
| EXPECT_TRUE(AtEof());
|
|
|
| @@ -1489,8 +1482,8 @@ TEST_P(QuicHttpStreamTest, Priority) {
|
| // headers and payload.
|
| EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length),
|
| stream_->GetTotalSentBytes());
|
| - // Zero since the stream is closed before processing the headers.
|
| - EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
|
| + EXPECT_EQ(static_cast<int64_t>(response_size),
|
| + stream_->GetTotalReceivedBytes());
|
| }
|
|
|
| // Regression test for http://crbug.com/294870
|
|
|