Factor out QpackInstructionEncoder::Values.
Factor out some QpackInstructionEncoder members into a struct that the caller
can pass to Encode(). Also add DCHECK to Encode() and rename DoStaticBit() to
DoSBit() (since is can be used for either static bit or sign bit).
gfe-relnote: n/a, change to QUIC v99-only code.
PiperOrigin-RevId: 258548817
Change-Id: I1c5d02b16af1e2db4c71813cdfad9548774a8c48
diff --git a/quic/core/qpack/qpack_instruction_encoder_test.cc b/quic/core/qpack/qpack_instruction_encoder_test.cc
index d921fa6..0d172cd 100644
--- a/quic/core/qpack/qpack_instruction_encoder_test.cc
+++ b/quic/core/qpack/qpack_instruction_encoder_test.cc
@@ -20,8 +20,9 @@
~QpackInstructionEncoderTest() override = default;
// Append encoded |instruction| to |output_|.
- void EncodeInstruction(const QpackInstruction* instruction) {
- encoder_.Encode(instruction, &output_);
+ void EncodeInstruction(const QpackInstruction* instruction,
+ const QpackInstructionEncoder::Values& values) {
+ encoder_.Encode(instruction, values, &output_);
}
// Compare substring appended to |output_| since last EncodedSegmentMatches()
@@ -33,9 +34,8 @@
return recently_encoded == expected;
}
- QpackInstructionEncoder encoder_;
-
private:
+ QpackInstructionEncoder encoder_;
std::string output_;
std::string::size_type verified_position_;
};
@@ -44,12 +44,13 @@
const QpackInstruction instruction{QpackInstructionOpcode{0x00, 0x80},
{{QpackInstructionFieldType::kVarint, 7}}};
- encoder_.set_varint(5);
- EncodeInstruction(&instruction);
+ QpackInstructionEncoder::Values values;
+ values.varint = 5;
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("05"));
- encoder_.set_varint(127);
- EncodeInstruction(&instruction);
+ values.varint = 127;
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("7f00"));
}
@@ -60,16 +61,17 @@
{QpackInstructionFieldType::kVarint, 5},
{QpackInstructionFieldType::kVarint2, 8}}};
- encoder_.set_s_bit(true);
- encoder_.set_varint(5);
- encoder_.set_varint2(200);
- EncodeInstruction(&instruction);
+ QpackInstructionEncoder::Values values;
+ values.s_bit = true;
+ values.varint = 5;
+ values.varint2 = 200;
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("a5c8"));
- encoder_.set_s_bit(false);
- encoder_.set_varint(31);
- encoder_.set_varint2(356);
- EncodeInstruction(&instruction);
+ values.s_bit = false;
+ values.varint = 31;
+ values.varint2 = 356;
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("9f00ff65"));
}
@@ -79,16 +81,17 @@
{QpackInstructionFieldType::kVarint, 5},
{QpackInstructionFieldType::kValue, 7}}};
- encoder_.set_s_bit(true);
- encoder_.set_varint(100);
- encoder_.set_value("foo");
- EncodeInstruction(&instruction);
+ QpackInstructionEncoder::Values values;
+ values.s_bit = true;
+ values.varint = 100;
+ values.value = "foo";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("ff458294e7"));
- encoder_.set_s_bit(false);
- encoder_.set_varint(3);
- encoder_.set_value("bar");
- EncodeInstruction(&instruction);
+ values.s_bit = false;
+ values.varint = 3;
+ values.value = "bar";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("c303626172"));
}
@@ -96,16 +99,17 @@
const QpackInstruction instruction{QpackInstructionOpcode{0xe0, 0xe0},
{{QpackInstructionFieldType::kName, 4}}};
- encoder_.set_name("");
- EncodeInstruction(&instruction);
+ QpackInstructionEncoder::Values values;
+ values.name = "";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("e0"));
- encoder_.set_name("foo");
- EncodeInstruction(&instruction);
+ values.name = "foo";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("f294e7"));
- encoder_.set_name("bar");
- EncodeInstruction(&instruction);
+ values.name = "bar";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("e3626172"));
}
@@ -113,16 +117,17 @@
const QpackInstruction instruction{QpackInstructionOpcode{0xf0, 0xf0},
{{QpackInstructionFieldType::kValue, 3}}};
- encoder_.set_value("");
- EncodeInstruction(&instruction);
+ QpackInstructionEncoder::Values values;
+ values.value = "";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("f0"));
- encoder_.set_value("foo");
- EncodeInstruction(&instruction);
+ values.value = "foo";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("fa94e7"));
- encoder_.set_value("bar");
- EncodeInstruction(&instruction);
+ values.value = "bar";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("f3626172"));
}
@@ -132,16 +137,17 @@
{QpackInstructionFieldType::kName, 2},
{QpackInstructionFieldType::kValue, 7}}};
- encoder_.set_s_bit(false);
- encoder_.set_name("");
- encoder_.set_value("");
- EncodeInstruction(&instruction);
+ QpackInstructionEncoder::Values values;
+ values.s_bit = false;
+ values.name = "";
+ values.value = "";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("f000"));
- encoder_.set_s_bit(true);
- encoder_.set_name("foo");
- encoder_.set_value("bar");
- EncodeInstruction(&instruction);
+ values.s_bit = true;
+ values.name = "foo";
+ values.value = "bar";
+ EncodeInstruction(&instruction, values);
EXPECT_TRUE(EncodedSegmentMatches("fe94e703626172"));
}