| Index: net/spdy/spdy_headers_block_parser_test.cc
|
| diff --git a/net/spdy/spdy_headers_block_parser_test.cc b/net/spdy/spdy_headers_block_parser_test.cc
|
| index d9a54068d285e110873791fa71fad3542794badf..7764bc9c3aa04abef25a68bce6bd219489b42ab5 100644
|
| --- a/net/spdy/spdy_headers_block_parser_test.cc
|
| +++ b/net/spdy/spdy_headers_block_parser_test.cc
|
| @@ -26,7 +26,7 @@ class MockSpdyHeadersHandler : public SpdyHeadersHandlerInterface {
|
| public:
|
| MOCK_METHOD2(OnHeaderBlock, void(SpdyStreamId stream_id,
|
| uint32_t num_of_headers));
|
| - MOCK_METHOD1(OnHeaderBlockEnd, void(SpdyStreamId stream_id));
|
| + MOCK_METHOD2(OnHeaderBlockEnd, void(SpdyStreamId stream_id, size_t bytes));
|
| MOCK_METHOD3(OnHeader, void(SpdyStreamId stream_id,
|
| StringPiece,
|
| StringPiece));
|
| @@ -120,15 +120,16 @@ TEST_P(SpdyHeadersBlockParserTest, BasicTest) {
|
| // Sanity test, verify that we parse out correctly a block with
|
| // a single key-value pair and that we notify when we start and finish
|
| // handling a headers block.
|
| + string headers(CreateHeaders(1, false));
|
| +
|
| EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
|
|
|
| std::string expect_key = base_key + IntToString(0);
|
| std::string expect_value = base_value + IntToString(0);
|
| EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
|
| StringPiece(expect_value))).Times(1);
|
| - EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
|
| + EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
|
|
|
| - string headers(CreateHeaders(1, false));
|
| EXPECT_TRUE(parser_->
|
| HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
|
| EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error());
|
| @@ -137,15 +138,16 @@ TEST_P(SpdyHeadersBlockParserTest, BasicTest) {
|
| TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) {
|
| // Sanity test, verify that we parse out correctly a block with
|
| // a single key-value pair when the key and value contain null charecters.
|
| + string headers(CreateHeaders(1, true));
|
| +
|
| EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
|
|
|
| std::string expect_key = base_key + string("\0", 1) + IntToString(0);
|
| std::string expect_value = base_value + string("\0", 1) + IntToString(0);
|
| EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
|
| StringPiece(expect_value))).Times(1);
|
| - EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
|
| + EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
|
|
|
| - string headers(CreateHeaders(1, true));
|
| EXPECT_TRUE(parser_->
|
| HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
|
| EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error());
|
| @@ -154,6 +156,9 @@ TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) {
|
| TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
|
| testing::InSequence s;
|
|
|
| + // CreateHeaders is deterministic; we can call it once for the whole test.
|
| + string headers(CreateHeaders(kNumHeadersInBlock, false));
|
| +
|
| // The mock doesn't retain storage of arguments, so keep them in scope.
|
| std::vector<string> retained_arguments;
|
| for (int i = 0; i < kNumHeadersInBlock; i++) {
|
| @@ -169,11 +174,10 @@ TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
|
| StringPiece(retained_arguments[2 * j]),
|
| StringPiece(retained_arguments[2 * j + 1]))).Times(1);
|
| }
|
| - EXPECT_CALL(handler_, OnHeaderBlockEnd(i)).Times(1);
|
| + EXPECT_CALL(handler_, OnHeaderBlockEnd(i, headers.length())).Times(1);
|
| }
|
| // Parse the header blocks, feeding the parser one byte at a time.
|
| for (int i = 0; i < kNumHeaderBlocks; i++) {
|
| - string headers(CreateHeaders(kNumHeadersInBlock, false));
|
| for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
|
| if ((it + 1) == headers.end()) {
|
| // Last byte completes the block.
|
| @@ -190,14 +194,15 @@ TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
|
| TEST_P(SpdyHeadersBlockParserTest, HandlesEmptyCallsTest) {
|
| EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
|
|
|
| + string headers(CreateHeaders(1, false));
|
| +
|
| string expect_key = base_key + IntToString(0);
|
| string expect_value = base_value + IntToString(0);
|
| EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
|
| StringPiece(expect_value))).Times(1);
|
| - EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
|
| + EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
|
|
|
| // Send a header in pieces with intermediate empty calls.
|
| - string headers(CreateHeaders(1, false));
|
| for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
|
| if ((it + 1) == headers.end()) {
|
| // Last byte completes the block.
|
| @@ -236,15 +241,16 @@ TEST_P(SpdyHeadersBlockParserTest, LargeBlocksDiscardedTest) {
|
| }
|
|
|
| TEST_P(SpdyHeadersBlockParserTest, ExtraDataTest) {
|
| + string headers = CreateHeaders(1, false) + "foobar";
|
| +
|
| EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
|
| - EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
|
| + EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
|
|
|
| string expect_key = base_key + IntToString(0);
|
| string expect_value = base_value + IntToString(0);
|
| EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
|
| StringPiece(expect_value))).Times(1);
|
|
|
| - string headers = CreateHeaders(1, false) + "foobar";
|
| EXPECT_FALSE(parser_->
|
| HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
|
| EXPECT_EQ(SpdyHeadersBlockParser::TOO_MUCH_DATA, parser_->get_error());
|
|
|