Index: net/spdy/hpack/hpack_encoder.cc |
diff --git a/net/spdy/hpack/hpack_encoder.cc b/net/spdy/hpack/hpack_encoder.cc |
index d642c3f0d5537f43b4eb7a45480c1afd906b90f0..525a73766105cd4c5ce2eb911ddc4a288c06240a 100644 |
--- a/net/spdy/hpack/hpack_encoder.cc |
+++ b/net/spdy/hpack/hpack_encoder.cc |
@@ -56,6 +56,9 @@ class HpackEncoder::RepresentationIterator { |
namespace { |
+// The default header listener. |
+void NoOpListener(StringPiece /*name*/, StringPiece /*value*/) {} |
+ |
// The default HPACK indexing policy. |
bool DefaultPolicy(StringPiece name, StringPiece /* value */) { |
if (name.empty()) { |
@@ -76,6 +79,7 @@ HpackEncoder::HpackEncoder(const HpackHuffmanTable& table) |
: output_stream_(), |
huffman_table_(table), |
min_table_size_setting_received_(std::numeric_limits<size_t>::max()), |
+ listener_(NoOpListener), |
should_index_(DefaultPolicy), |
allow_huffman_compression_(true), |
should_emit_table_size_(false) {} |
@@ -121,6 +125,7 @@ bool HpackEncoder::EncodeHeaderSetWithoutCompression( |
allow_huffman_compression_ = false; |
MaybeEmitTableSize(); |
for (const auto& header : header_set) { |
+ listener_(header.first, header.second); |
// Note that cookies are not crumbled in this case. |
EmitNonIndexedLiteral(header); |
} |
@@ -146,6 +151,7 @@ void HpackEncoder::EncodeRepresentations(RepresentationIterator* iter, |
MaybeEmitTableSize(); |
while (iter->HasNext()) { |
const auto header = iter->Next(); |
+ listener_(header.first, header.second); |
const HpackEntry* entry = |
header_table_.GetByNameAndValue(header.first, header.second); |
if (entry != nullptr) { |