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)); |