| Index: net/quic/quic_headers_stream_test.cc
|
| diff --git a/net/quic/quic_headers_stream_test.cc b/net/quic/quic_headers_stream_test.cc
|
| index fbfb8ac2680bb3fb3a61289fc4e673693dc48021..4bb65969957fd71acd2bc740352d43c9b54e7506 100644
|
| --- a/net/quic/quic_headers_stream_test.cc
|
| +++ b/net/quic/quic_headers_stream_test.cc
|
| @@ -23,6 +23,7 @@ using std::vector;
|
| using testing::ElementsAre;
|
| using testing::InSequence;
|
| using testing::Invoke;
|
| +using testing::Return;
|
| using testing::StrictMock;
|
| using testing::WithArgs;
|
| using testing::_;
|
| @@ -175,6 +176,29 @@ class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> {
|
| saved_header_data_.append(data.data(), data.length());
|
| }
|
|
|
| + void SavePromiseHeaderList(QuicStreamId /* stream_id */,
|
| + QuicStreamId /* promised_stream_id */,
|
| + size_t size,
|
| + const QuicHeaderList& header_list) {
|
| + SaveToHandler(size, header_list);
|
| + }
|
| +
|
| + void SaveHeaderList(QuicStreamId /* stream_id */,
|
| + bool /* fin */,
|
| + size_t size,
|
| + const QuicHeaderList& header_list) {
|
| + SaveToHandler(size, header_list);
|
| + }
|
| +
|
| + void SaveToHandler(size_t size, const QuicHeaderList& header_list) {
|
| + headers_handler_.reset(new TestHeadersHandler);
|
| + headers_handler_->OnHeaderBlockStart();
|
| + for (const auto& p : header_list) {
|
| + headers_handler_->OnHeader(p.first, p.second);
|
| + }
|
| + headers_handler_->OnHeaderBlockEnd(size);
|
| + }
|
| +
|
| void WriteHeadersAndExpectSynStream(QuicStreamId stream_id,
|
| bool fin,
|
| SpdyPriority priority) {
|
| @@ -208,9 +232,10 @@ class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> {
|
| /*parent_stream_id=*/0,
|
| /*exclusive=*/false, fin, kFrameComplete));
|
| }
|
| - EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _))
|
| - .WillRepeatedly(WithArgs<1, 2>(
|
| - Invoke(this, &QuicHeadersStreamTest::SaveHeaderData)));
|
| + headers_handler_.reset(new TestHeadersHandler);
|
| + EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id))
|
| + .WillOnce(Return(headers_handler_.get()));
|
| + EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1);
|
| if (fin) {
|
| EXPECT_CALL(visitor_, OnStreamEnd(stream_id));
|
| }
|
| @@ -223,11 +248,8 @@ class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> {
|
| }
|
|
|
| void CheckHeaders() {
|
| - SpdyHeaderBlock headers;
|
| - EXPECT_TRUE(framer_->ParseHeaderBlockInBuffer(
|
| - saved_header_data_.data(), saved_header_data_.length(), &headers));
|
| - EXPECT_EQ(headers_, headers);
|
| - saved_header_data_.clear();
|
| + EXPECT_EQ(headers_, headers_handler_->decoded_block());
|
| + headers_handler_.reset();
|
| }
|
|
|
| Perspective perspective() { return GetParam().perspective; }
|
| @@ -255,6 +277,7 @@ class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> {
|
| StrictMock<MockQuicSpdySession> session_;
|
| QuicHeadersStream* headers_stream_;
|
| SpdyHeaderBlock headers_;
|
| + std::unique_ptr<TestHeadersHandler> headers_handler_;
|
| string body_;
|
| string saved_data_;
|
| string saved_header_data_;
|
| @@ -305,9 +328,10 @@ TEST_P(QuicHeadersStreamTest, WritePushPromises) {
|
| // Parse the outgoing data and check that it matches was was written.
|
| EXPECT_CALL(visitor_,
|
| OnPushPromise(stream_id, promised_stream_id, kFrameComplete));
|
| - EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _))
|
| - .WillRepeatedly(WithArgs<1, 2>(
|
| - Invoke(this, &QuicHeadersStreamTest::SaveHeaderData)));
|
| + headers_handler_.reset(new TestHeadersHandler);
|
| + EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id))
|
| + .WillOnce(Return(headers_handler_.get()));
|
| + EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1);
|
| framer_->ProcessInput(saved_data_.data(), saved_data_.length());
|
| EXPECT_FALSE(framer_->HasError())
|
| << SpdyFramer::ErrorCodeToString(framer_->error_code());
|
| @@ -341,11 +365,9 @@ TEST_P(QuicHeadersStreamTest, ProcessRawData) {
|
| headers_frame.set_fin(fin);
|
| frame = framer_->SerializeFrame(headers_frame);
|
| }
|
| - EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
|
| - .WillRepeatedly(WithArgs<1>(Invoke(
|
| - this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
|
| EXPECT_CALL(session_,
|
| - OnStreamHeadersComplete(stream_id, fin, frame.size()));
|
| + OnStreamHeaderList(stream_id, fin, frame.size(), _))
|
| + .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
|
| stream_frame_.data_buffer = frame.data();
|
| stream_frame_.data_length = frame.size();
|
| headers_stream_->OnStreamFrame(stream_frame_);
|
| @@ -372,11 +394,10 @@ TEST_P(QuicHeadersStreamTest, ProcessPushPromise) {
|
| .WillRepeatedly(InvokeWithoutArgs(
|
| this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
|
| } else {
|
| - EXPECT_CALL(session_, OnPromiseHeaders(stream_id, _))
|
| - .WillRepeatedly(WithArgs<1>(
|
| - Invoke(this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
|
| - EXPECT_CALL(session_, OnPromiseHeadersComplete(
|
| - stream_id, promised_stream_id, frame.size()));
|
| + EXPECT_CALL(session_, OnPromiseHeaderList(stream_id, promised_stream_id,
|
| + frame.size(), _))
|
| + .WillOnce(
|
| + Invoke(this, &QuicHeadersStreamTest::SavePromiseHeaderList));
|
| }
|
| stream_frame_.data_buffer = frame.data();
|
| stream_frame_.data_length = frame.size();
|
| @@ -412,9 +433,8 @@ TEST_P(QuicHeadersStreamTest, EmptyHeaderHOLBlockedTime) {
|
| headers_frame.set_fin(fin);
|
| frame = framer_->SerializeFrame(headers_frame);
|
| }
|
| - EXPECT_CALL(session_, OnStreamHeaders(stream_id, _));
|
| - EXPECT_CALL(session_,
|
| - OnStreamHeadersComplete(stream_id, fin, frame.size()));
|
| + EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, frame.size(), _))
|
| + .Times(1);
|
| stream_frame_.data_buffer = frame.data();
|
| stream_frame_.data_length = frame.size();
|
| headers_stream_->OnStreamFrame(stream_frame_);
|
| @@ -456,9 +476,7 @@ TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) {
|
| DVLOG(1) << "make frame for stream " << stream_num << " offset "
|
| << stream_frames[stream_num].offset;
|
| stream_frame_.offset += frames[stream_num].size();
|
| - EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)).Times(1);
|
| - EXPECT_CALL(session_, OnStreamHeadersComplete(stream_id, fin, _))
|
| - .Times(1);
|
| + EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, _, _)).Times(1);
|
| }
|
| }
|
|
|
| @@ -499,11 +517,9 @@ TEST_P(QuicHeadersStreamTest, ProcessLargeRawData) {
|
| headers_frame.set_fin(fin);
|
| frame = framer_->SerializeFrame(headers_frame);
|
| }
|
| - EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
|
| - .WillRepeatedly(WithArgs<1>(Invoke(
|
| - this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
|
| EXPECT_CALL(session_,
|
| - OnStreamHeadersComplete(stream_id, fin, frame.size()));
|
| + OnStreamHeaderList(stream_id, fin, frame.size(), _))
|
| + .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
|
| stream_frame_.data_buffer = frame.data();
|
| stream_frame_.data_length = frame.size();
|
| headers_stream_->OnStreamFrame(stream_frame_);
|
| @@ -643,11 +659,9 @@ TEST_P(QuicHeadersStreamTest, HpackDecoderDebugVisitor) {
|
| headers_frame.set_fin(fin);
|
| frame = framer_->SerializeFrame(headers_frame);
|
| }
|
| - EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
|
| - .WillRepeatedly(WithArgs<1>(Invoke(
|
| - this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
|
| EXPECT_CALL(session_,
|
| - OnStreamHeadersComplete(stream_id, fin, frame.size()));
|
| + OnStreamHeaderList(stream_id, fin, frame.size(), _))
|
| + .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
|
| stream_frame_.data_buffer = frame.data();
|
| stream_frame_.data_length = frame.size();
|
| connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
|
|
|