| Index: net/quic/chromium/quic_chromium_client_stream_test.cc
|
| diff --git a/net/quic/chromium/quic_chromium_client_stream_test.cc b/net/quic/chromium/quic_chromium_client_stream_test.cc
|
| index 84f97bf50b53ff47ca92dcbcfcdd2262185f86df..c856d01995d8bb6416d27e3c85dd9d16f90033ef 100644
|
| --- a/net/quic/chromium/quic_chromium_client_stream_test.cc
|
| +++ b/net/quic/chromium/quic_chromium_client_stream_test.cc
|
| @@ -217,6 +217,28 @@ class QuicChromiumClientStreamTest
|
| StringPiece(buffer->data(), expected_data.length()));
|
| }
|
|
|
| + QuicHeaderList ProcessHeaders(const SpdyHeaderBlock& headers) {
|
| + QuicHeaderList h = AsHeaderList(headers);
|
| + stream_->OnStreamHeaderList(false, h.uncompressed_header_bytes(), h);
|
| + return h;
|
| + }
|
| +
|
| + QuicHeaderList ProcessTrailers(const SpdyHeaderBlock& headers) {
|
| + QuicHeaderList h = AsHeaderList(headers);
|
| + stream_->OnStreamHeaderList(true, h.uncompressed_header_bytes(), h);
|
| + return h;
|
| + }
|
| +
|
| + QuicHeaderList ProcessHeadersFull(const SpdyHeaderBlock& headers) {
|
| + QuicHeaderList h = ProcessHeaders(headers);
|
| + EXPECT_CALL(delegate_,
|
| + OnHeadersAvailableMock(_, h.uncompressed_header_bytes()));
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(headers, delegate_.headers_);
|
| + EXPECT_TRUE(stream_->header_list().empty());
|
| + return h;
|
| + }
|
| +
|
| QuicCryptoClientConfig crypto_config_;
|
| testing::StrictMock<MockDelegate> delegate_;
|
| MockQuicConnectionHelper helper_;
|
| @@ -233,18 +255,8 @@ INSTANTIATE_TEST_CASE_P(Version,
|
|
|
| TEST_P(QuicChromiumClientStreamTest, OnFinRead) {
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| QuicStreamOffset offset = 0;
|
| - stream_->OnStreamHeaders(uncompressed_headers);
|
| - stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| - EXPECT_TRUE(stream_->decompressed_headers().empty());
|
| -
|
| + ProcessHeadersFull(headers_);
|
| QuicStreamFrame frame2(kTestStreamId, true, offset, StringPiece());
|
| EXPECT_CALL(delegate_, OnClose());
|
| stream_->OnStreamFrame(frame2);
|
| @@ -259,16 +271,7 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailableBeforeHeaders) {
|
|
|
| TEST_P(QuicChromiumClientStreamTest, OnDataAvailable) {
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| - stream_->OnStreamHeaders(uncompressed_headers);
|
| - stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| - EXPECT_TRUE(stream_->decompressed_headers().empty());
|
| + ProcessHeadersFull(headers_);
|
|
|
| const char data[] = "hello world!";
|
| stream_->OnStreamFrame(QuicStreamFrame(kTestStreamId, /*fin=*/false,
|
| @@ -285,12 +288,14 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailable) {
|
| }
|
|
|
| TEST_P(QuicChromiumClientStreamTest, ProcessHeadersWithError) {
|
| - std::string bad_headers = "...";
|
| + SpdyHeaderBlock bad_headers;
|
| + bad_headers["NAME"] = "...";
|
| EXPECT_CALL(session_,
|
| SendRstStream(kTestStreamId, QUIC_BAD_APPLICATION_PAYLOAD, 0));
|
|
|
| - stream_->OnStreamHeaders(StringPiece(bad_headers));
|
| - stream_->OnStreamHeadersComplete(false, bad_headers.length());
|
| + auto headers = AsHeaderList(bad_headers);
|
| + stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(),
|
| + headers);
|
|
|
| base::RunLoop().RunUntilIdle();
|
|
|
| @@ -299,16 +304,8 @@ TEST_P(QuicChromiumClientStreamTest, ProcessHeadersWithError) {
|
|
|
| TEST_P(QuicChromiumClientStreamTest, OnDataAvailableWithError) {
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| - stream_->OnStreamHeaders(uncompressed_headers);
|
| - stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| - EXPECT_TRUE(stream_->decompressed_headers().empty());
|
| + auto headers = AsHeaderList(headers_);
|
| + ProcessHeadersFull(headers_);
|
|
|
| const char data[] = "hello world!";
|
| stream_->OnStreamFrame(QuicStreamFrame(kTestStreamId, /*fin=*/false,
|
| @@ -331,16 +328,7 @@ TEST_P(QuicChromiumClientStreamTest, OnError) {
|
|
|
| TEST_P(QuicChromiumClientStreamTest, OnTrailers) {
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| - stream_->OnStreamHeaders(uncompressed_headers);
|
| - stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| - EXPECT_TRUE(stream_->decompressed_headers().empty());
|
| + ProcessHeadersFull(headers_);
|
|
|
| const char data[] = "hello world!";
|
| stream_->OnStreamFrame(QuicStreamFrame(kTestStreamId, /*fin=*/false,
|
| @@ -354,15 +342,11 @@ TEST_P(QuicChromiumClientStreamTest, OnTrailers) {
|
| SpdyHeaderBlock trailers;
|
| trailers["bar"] = "foo";
|
| trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(data));
|
| - std::string uncompressed_trailers =
|
| - SpdyUtils::SerializeUncompressedHeaders(trailers);
|
| -
|
| - stream_->OnStreamHeaders(uncompressed_trailers);
|
| - stream_->OnStreamHeadersComplete(true, uncompressed_trailers.length());
|
|
|
| + auto t = ProcessTrailers(trailers);
|
| base::RunLoop run_loop;
|
| EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_trailers.length()))
|
| + OnHeadersAvailableMock(_, t.uncompressed_header_bytes()))
|
| .WillOnce(testing::InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
|
|
|
| run_loop.Run();
|
| @@ -388,16 +372,7 @@ TEST_P(QuicChromiumClientStreamTest, OnTrailers) {
|
| // immediately notified about trailers.
|
| TEST_P(QuicChromiumClientStreamTest, MarkTrailersConsumedWhenNotifyDelegate) {
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| - stream_->OnStreamHeaders(uncompressed_headers);
|
| - stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| - EXPECT_TRUE(stream_->decompressed_headers().empty());
|
| + ProcessHeadersFull(headers_);
|
|
|
| const char data[] = "hello world!";
|
| stream_->OnStreamFrame(QuicStreamFrame(kTestStreamId, /*fin=*/false,
|
| @@ -422,16 +397,12 @@ TEST_P(QuicChromiumClientStreamTest, MarkTrailersConsumedWhenNotifyDelegate) {
|
| SpdyHeaderBlock trailers;
|
| trailers["bar"] = "foo";
|
| trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(data));
|
| - std::string uncompressed_trailers =
|
| - SpdyUtils::SerializeUncompressedHeaders(trailers);
|
| -
|
| - stream_->OnStreamHeaders(uncompressed_trailers);
|
| - stream_->OnStreamHeadersComplete(true, uncompressed_trailers.length());
|
| + QuicHeaderList t = ProcessTrailers(trailers);
|
| EXPECT_FALSE(stream_->IsDoneReading());
|
|
|
| base::RunLoop run_loop2;
|
| EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_trailers.length()))
|
| + OnHeadersAvailableMock(_, t.uncompressed_header_bytes()))
|
| .WillOnce(
|
| testing::InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); }));
|
|
|
| @@ -463,16 +434,7 @@ TEST_P(QuicChromiumClientStreamTest, MarkTrailersConsumedWhenNotifyDelegate) {
|
| // of 0 (EOF).
|
| TEST_P(QuicChromiumClientStreamTest, ReadAfterTrailersReceivedButNotDelivered) {
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| - stream_->OnStreamHeaders(uncompressed_headers);
|
| - stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| - EXPECT_TRUE(stream_->decompressed_headers().empty());
|
| + ProcessHeadersFull(headers_);
|
|
|
| const char data[] = "hello world!";
|
| stream_->OnStreamFrame(QuicStreamFrame(kTestStreamId, /*fin=*/false,
|
| @@ -494,11 +456,8 @@ TEST_P(QuicChromiumClientStreamTest, ReadAfterTrailersReceivedButNotDelivered) {
|
| SpdyHeaderBlock trailers;
|
| trailers["bar"] = "foo";
|
| trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(data));
|
| - std::string uncompressed_trailers =
|
| - SpdyUtils::SerializeUncompressedHeaders(trailers);
|
|
|
| - stream_->OnStreamHeaders(uncompressed_trailers);
|
| - stream_->OnStreamHeadersComplete(true, uncompressed_trailers.length());
|
| + QuicHeaderList t = ProcessTrailers(trailers);
|
|
|
| // Read again, it return ERR_IO_PENDING.
|
| scoped_refptr<IOBuffer> buffer(new IOBuffer(1));
|
| @@ -509,7 +468,7 @@ TEST_P(QuicChromiumClientStreamTest, ReadAfterTrailersReceivedButNotDelivered) {
|
|
|
| base::RunLoop run_loop2;
|
| EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_trailers.length()))
|
| + OnHeadersAvailableMock(_, t.uncompressed_header_bytes()))
|
| .WillOnce(
|
| testing::InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); }));
|
|
|
| @@ -628,17 +587,8 @@ TEST_P(QuicChromiumClientStreamTest, HeadersBeforeDelegate) {
|
| session_.ActivateStream(base::WrapUnique(stream));
|
|
|
| InitializeHeaders();
|
| - std::string uncompressed_headers =
|
| - SpdyUtils::SerializeUncompressedHeaders(headers_);
|
| - stream->OnStreamHeaders(uncompressed_headers);
|
| - stream->OnStreamHeadersComplete(false, uncompressed_headers.length());
|
| - EXPECT_TRUE(stream->decompressed_headers().empty());
|
| -
|
| - EXPECT_CALL(delegate_,
|
| - OnHeadersAvailableMock(_, uncompressed_headers.length()));
|
| stream->SetDelegate(&delegate_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(headers_, delegate_.headers_);
|
| + ProcessHeadersFull(headers_);
|
|
|
| // Times(2) because OnClose will be called for stream and stream_.
|
| EXPECT_CALL(delegate_, OnClose()).Times(2);
|
|
|