| Index: net/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc
|
| diff --git a/net/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc b/net/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc
|
| index e0620466430a1702c5f70bcfb18bed5db0ca3d89..0b5564ff8e6c843ae9dbf7e9a62cda8c2a4e1bdd 100644
|
| --- a/net/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc
|
| +++ b/net/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc
|
| @@ -7,6 +7,8 @@
|
| // Tests of HpackWholeEntryBuffer: does it buffer correctly, and does it
|
| // detect Huffman decoding errors and oversize string errors?
|
|
|
| +#include "net/test/gtest_util.h"
|
| +#include "testing/gmock/include/gmock/gmock-matchers.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -15,7 +17,6 @@ using ::testing::AllOf;
|
| using ::testing::HasSubstr;
|
| using ::testing::InSequence;
|
| using ::testing::Property;
|
| -using ::testing::SaveArg;
|
| using ::testing::StrictMock;
|
| using ::testing::_;
|
|
|
| @@ -25,6 +26,15 @@ namespace {
|
|
|
| constexpr size_t kMaxStringSize = 20;
|
|
|
| +// Define HasSubstr() for base::StringPiece arguments.
|
| +// This shadows ::testing::HasSubstr(), which only works on argument types
|
| +// that can be implicilty converted to a std::string.
|
| +inline ::testing::PolymorphicMatcher<StringPieceHasSubstrMatcher> HasSubstr(
|
| + const std::string& substring) {
|
| + return ::testing::MakePolymorphicMatcher(
|
| + StringPieceHasSubstrMatcher(substring));
|
| +}
|
| +
|
| class MockHpackWholeEntryListener : public HpackWholeEntryListener {
|
| public:
|
| ~MockHpackWholeEntryListener() override {}
|
| @@ -157,21 +167,15 @@ TEST_F(HpackWholeEntryBufferTest, OnLiteralNameAndValue) {
|
| // Verify that a name longer than the allowed size generates an error.
|
| TEST_F(HpackWholeEntryBufferTest, NameTooLong) {
|
| entry_buffer_.OnStartLiteralHeader(HpackEntryType::kIndexedLiteralHeader, 0);
|
| - StringPiece error_message;
|
| - EXPECT_CALL(listener_, OnHpackDecodeError(_))
|
| - .WillOnce(SaveArg<0>(&error_message));
|
| + EXPECT_CALL(listener_, OnHpackDecodeError(HasSubstr("HPACK entry name")));
|
| entry_buffer_.OnNameStart(false, kMaxStringSize + 1);
|
| - EXPECT_THAT(error_message.as_string(), HasSubstr("HPACK entry name"));
|
| }
|
|
|
| // Verify that a name longer than the allowed size generates an error.
|
| TEST_F(HpackWholeEntryBufferTest, ValueTooLong) {
|
| entry_buffer_.OnStartLiteralHeader(HpackEntryType::kIndexedLiteralHeader, 1);
|
| - StringPiece error_message;
|
| - EXPECT_CALL(listener_, OnHpackDecodeError(_))
|
| - .WillOnce(SaveArg<0>(&error_message));
|
| + EXPECT_CALL(listener_, OnHpackDecodeError(HasSubstr("HPACK entry value")));
|
| entry_buffer_.OnValueStart(false, kMaxStringSize + 1);
|
| - EXPECT_THAT(error_message.as_string(), HasSubstr("HPACK entry value"));
|
| }
|
|
|
| // Verify that a Huffman encoded name with an explicit EOS generates an error
|
| @@ -183,12 +187,9 @@ TEST_F(HpackWholeEntryBufferTest, NameHuffmanError) {
|
| entry_buffer_.OnNameStart(true, 4);
|
| entry_buffer_.OnNameData(data, 3);
|
|
|
| - StringPiece error_message;
|
| - EXPECT_CALL(listener_, OnHpackDecodeError(_))
|
| - .WillOnce(SaveArg<0>(&error_message));
|
| + EXPECT_CALL(listener_, OnHpackDecodeError(HasSubstr("HPACK entry name")));
|
|
|
| entry_buffer_.OnNameData(data, 1);
|
| - EXPECT_THAT(error_message.as_string(), HasSubstr("HPACK entry name"));
|
|
|
| // After an error is reported, the listener is not called again.
|
| EXPECT_CALL(listener_, OnDynamicTableSizeUpdate(8096)).Times(0);
|
| @@ -204,12 +205,9 @@ TEST_F(HpackWholeEntryBufferTest, ValueeHuffmanError) {
|
| entry_buffer_.OnValueStart(true, 3);
|
| entry_buffer_.OnValueData(data, 3);
|
|
|
| - StringPiece error_message;
|
| - EXPECT_CALL(listener_, OnHpackDecodeError(_))
|
| - .WillOnce(SaveArg<0>(&error_message));
|
| + EXPECT_CALL(listener_, OnHpackDecodeError(HasSubstr("HPACK entry value")));
|
|
|
| entry_buffer_.OnValueEnd();
|
| - EXPECT_THAT(error_message.as_string(), HasSubstr("HPACK entry value"));
|
|
|
| // After an error is reported, the listener is not called again.
|
| EXPECT_CALL(listener_, OnIndexedHeader(17)).Times(0);
|
|
|