| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef QUICHE_SPDY_CORE_SPDY_TEST_UTILS_H_ |
| #define QUICHE_SPDY_CORE_SPDY_TEST_UTILS_H_ |
| |
| #include <cstddef> |
| #include <cstdint> |
| #include <string> |
| |
| #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" |
| #include "net/third_party/quiche/src/spdy/core/spdy_header_block.h" |
| #include "net/third_party/quiche/src/spdy/core/spdy_headers_handler_interface.h" |
| #include "net/third_party/quiche/src/spdy/core/spdy_protocol.h" |
| #include "net/third_party/quiche/src/spdy/platform/api/spdy_bug_tracker.h" |
| |
| namespace spdy { |
| |
| inline bool operator==(quiche::QuicheStringPiece x, |
| const SpdyHeaderBlock::ValueProxy& y) { |
| return y.operator==(x); |
| } |
| |
| namespace test { |
| |
| std::string HexDumpWithMarks(const unsigned char* data, |
| int length, |
| const bool* marks, |
| int mark_length); |
| |
| void CompareCharArraysWithHexError(const std::string& description, |
| const unsigned char* actual, |
| const int actual_len, |
| const unsigned char* expected, |
| const int expected_len); |
| |
| void SetFrameFlags(SpdySerializedFrame* frame, uint8_t flags); |
| |
| void SetFrameLength(SpdySerializedFrame* frame, size_t length); |
| |
| // A test implementation of SpdyHeadersHandlerInterface that correctly |
| // reconstructs multiple header values for the same name. |
| class TestHeadersHandler : public SpdyHeadersHandlerInterface { |
| public: |
| TestHeadersHandler() {} |
| TestHeadersHandler(const TestHeadersHandler&) = delete; |
| TestHeadersHandler& operator=(const TestHeadersHandler&) = delete; |
| |
| void OnHeaderBlockStart() override; |
| |
| void OnHeader(quiche::QuicheStringPiece name, |
| quiche::QuicheStringPiece value) override; |
| |
| void OnHeaderBlockEnd(size_t header_bytes_parsed, |
| size_t compressed_header_bytes_parsed) override; |
| |
| const SpdyHeaderBlock& decoded_block() const { return block_; } |
| size_t header_bytes_parsed() const { return header_bytes_parsed_; } |
| size_t compressed_header_bytes_parsed() const { |
| return compressed_header_bytes_parsed_; |
| } |
| |
| private: |
| SpdyHeaderBlock block_; |
| size_t header_bytes_parsed_ = 0; |
| size_t compressed_header_bytes_parsed_ = 0; |
| }; |
| |
| } // namespace test |
| } // namespace spdy |
| |
| #endif // QUICHE_SPDY_CORE_SPDY_TEST_UTILS_H_ |