summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/http2/hpack/decoder/hpack_block_collector.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/third_party/quiche/src/http2/hpack/decoder/hpack_block_collector.h')
-rw-r--r--chromium/net/third_party/quiche/src/http2/hpack/decoder/hpack_block_collector.h128
1 files changed, 0 insertions, 128 deletions
diff --git a/chromium/net/third_party/quiche/src/http2/hpack/decoder/hpack_block_collector.h b/chromium/net/third_party/quiche/src/http2/hpack/decoder/hpack_block_collector.h
deleted file mode 100644
index 812c3dbcec1..00000000000
--- a/chromium/net/third_party/quiche/src/http2/hpack/decoder/hpack_block_collector.h
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2016 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_HTTP2_HPACK_DECODER_HPACK_BLOCK_COLLECTOR_H_
-#define QUICHE_HTTP2_HPACK_DECODER_HPACK_BLOCK_COLLECTOR_H_
-
-// HpackBlockCollector implements HpackEntryDecoderListener in order to record
-// the calls using HpackEntryCollector instances (one per HPACK entry). This
-// supports testing of HpackBlockDecoder, which decodes entire HPACK blocks.
-//
-// In addition to implementing the callback methods, HpackBlockCollector also
-// supports comparing two HpackBlockCollector instances (i.e. an expected and
-// an actual), or a sole HPACK entry against an expected value.
-
-#include <stddef.h>
-
-#include <string>
-#include <vector>
-
-#include "absl/strings/string_view.h"
-#include "http2/hpack/decoder/hpack_entry_collector.h"
-#include "http2/hpack/decoder/hpack_entry_decoder_listener.h"
-#include "http2/hpack/http2_hpack_constants.h"
-#include "http2/hpack/tools/hpack_block_builder.h"
-#include "http2/test_tools/http2_random.h"
-
-namespace http2 {
-namespace test {
-
-class HpackBlockCollector : public HpackEntryDecoderListener {
- public:
- HpackBlockCollector();
- HpackBlockCollector(const HpackBlockCollector& other);
- ~HpackBlockCollector() override;
-
- // Implementations of HpackEntryDecoderListener, forwarding to pending_entry_,
- // an HpackEntryCollector for the "in-progress" HPACK entry. OnIndexedHeader
- // and OnDynamicTableSizeUpdate are pending only for that one call, while
- // OnStartLiteralHeader is followed by many calls, ending with OnValueEnd.
- // Once all the calls for one HPACK entry have been received, PushPendingEntry
- // is used to append the pending_entry_ entry to the collected entries_.
- void OnIndexedHeader(size_t index) override;
- void OnDynamicTableSizeUpdate(size_t size) override;
- void OnStartLiteralHeader(HpackEntryType header_type,
- size_t maybe_name_index) override;
- void OnNameStart(bool huffman_encoded, size_t len) override;
- void OnNameData(const char* data, size_t len) override;
- void OnNameEnd() override;
- void OnValueStart(bool huffman_encoded, size_t len) override;
- void OnValueData(const char* data, size_t len) override;
- void OnValueEnd() override;
-
- // Methods for creating a set of expectations (i.e. HPACK entries to compare
- // against those collected by another instance of HpackBlockCollector).
-
- // Add an HPACK entry for an indexed header.
- void ExpectIndexedHeader(size_t index);
-
- // Add an HPACK entry for a dynamic table size update.
- void ExpectDynamicTableSizeUpdate(size_t size);
-
- // Add an HPACK entry for a header entry with an index for the name, and a
- // literal value.
- void ExpectNameIndexAndLiteralValue(HpackEntryType type,
- size_t index,
- bool value_huffman,
- const std::string& value);
-
- // Add an HPACK entry for a header entry with a literal name and value.
- void ExpectLiteralNameAndValue(HpackEntryType type,
- bool name_huffman,
- const std::string& name,
- bool value_huffman,
- const std::string& value);
-
- // Shuffle the entries, in support of generating an HPACK block of entries
- // in some random order.
- void ShuffleEntries(Http2Random* rng);
-
- // Serialize entries_ to the HpackBlockBuilder.
- void AppendToHpackBlockBuilder(HpackBlockBuilder* hbb) const;
-
- // Return AssertionSuccess if there is just one entry, and it is an
- // Indexed Header with the specified index.
- ::testing::AssertionResult ValidateSoleIndexedHeader(size_t ndx) const;
-
- // Return AssertionSuccess if there is just one entry, and it is a
- // Dynamic Table Size Update with the specified size.
- ::testing::AssertionResult ValidateSoleDynamicTableSizeUpdate(
- size_t size) const;
-
- // Return AssertionSuccess if there is just one entry, and it is a Header
- // entry with an index for the name and a literal value.
- ::testing::AssertionResult ValidateSoleLiteralValueHeader(
- HpackEntryType expected_type,
- size_t expected_index,
- bool expected_value_huffman,
- absl::string_view expected_value) const;
-
- // Return AssertionSuccess if there is just one entry, and it is a Header
- // with a literal name and literal value.
- ::testing::AssertionResult ValidateSoleLiteralNameValueHeader(
- HpackEntryType expected_type,
- bool expected_name_huffman,
- absl::string_view expected_name,
- bool expected_value_huffman,
- absl::string_view expected_value) const;
-
- bool IsNotPending() const { return pending_entry_.IsClear(); }
- bool IsClear() const { return IsNotPending() && entries_.empty(); }
- void Clear();
-
- ::testing::AssertionResult VerifyEq(const HpackBlockCollector& that) const;
-
- private:
- // Push the value of pending_entry_ onto entries_, and clear pending_entry_.
- // The pending_entry_ must be complete.
- void PushPendingEntry();
-
- HpackEntryCollector pending_entry_;
- std::vector<HpackEntryCollector> entries_;
-};
-
-} // namespace test
-} // namespace http2
-
-#endif // QUICHE_HTTP2_HPACK_DECODER_HPACK_BLOCK_COLLECTOR_H_