Index: net/quic/quic_packet_creator_test.cc |
diff --git a/net/quic/quic_packet_creator_test.cc b/net/quic/quic_packet_creator_test.cc |
index b6c17f4c7e6dd0a9a00fd2489236fbb176e1cd19..73b5bef8e3ac527ef8a54885a555479a0c1a5d19 100644 |
--- a/net/quic/quic_packet_creator_test.cc |
+++ b/net/quic/quic_packet_creator_test.cc |
@@ -206,12 +206,12 @@ class QuicPacketCreatorTest : public ::testing::TestWithParam<TestParams> { |
PendingRetransmission CreateRetransmission( |
const QuicFrames& retransmittable_frames, |
bool has_crypto_handshake, |
- bool needs_padding, |
+ int num_padding_bytes, |
EncryptionLevel encryption_level, |
QuicPacketNumberLength packet_number_length) { |
return PendingRetransmission(1u, 1u, NOT_RETRANSMISSION, |
retransmittable_frames, has_crypto_handshake, |
- needs_padding, encryption_level, |
+ num_padding_bytes, encryption_level, |
packet_number_length); |
} |
@@ -416,7 +416,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { |
frames.push_back(QuicFrame(stream_frame)); |
char buffer[kMaxPacketSize]; |
PendingRetransmission retransmission(CreateRetransmission( |
- frames, true /* has_crypto_handshake */, true /* needs padding */, |
+ frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER)); |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
.WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
@@ -436,6 +436,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); |
EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
+ EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
ProcessPacket(serialized_packet_); |
@@ -450,7 +451,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeCryptoFrameWithForwardSecurity) { |
creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE); |
char buffer[kMaxPacketSize]; |
PendingRetransmission retransmission(CreateRetransmission( |
- frames, true /* has_crypto_handshake */, true /* needs padding */, |
+ frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
ENCRYPTION_NONE, |
QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
@@ -468,7 +469,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFrameWithForwardSecurity) { |
creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE); |
char buffer[kMaxPacketSize]; |
PendingRetransmission retransmission(CreateRetransmission( |
- frames, false /* has_crypto_handshake */, false /* needs padding */, |
+ frames, false /* has_crypto_handshake */, 0 /* no padding */, |
ENCRYPTION_NONE, |
QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
@@ -478,7 +479,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFrameWithForwardSecurity) { |
delete stream_frame; |
} |
-TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) { |
+TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPadding) { |
QuicFrame frame; |
QuicIOVector io_vector(MakeIOVector("fake handshake message data")); |
QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, |
@@ -487,7 +488,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) { |
frames.push_back(frame); |
char buffer[kMaxPacketSize]; |
PendingRetransmission retransmission(CreateRetransmission( |
- frames, true /* has_crypto_handshake */, true /* needs padding */, |
+ frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
ENCRYPTION_NONE, |
QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
@@ -497,6 +498,45 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) { |
delete frame.stream_frame; |
} |
+TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSpecifiedPadding) { |
+ QuicFrame frame; |
+ QuicIOVector io_vector(MakeIOVector("fake message data")); |
+ QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, |
+ io_vector, 0u, 0u, false, &frame); |
+ |
+ const int kNumPaddingBytes1 = 4; |
+ int packet_size = 0; |
+ { |
+ QuicFrames frames; |
+ frames.push_back(frame); |
+ char buffer[kMaxPacketSize]; |
+ PendingRetransmission retransmission(CreateRetransmission( |
+ frames, false /* has_crypto_handshake */, |
+ kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, |
+ QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
+ EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
+ .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
+ creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
+ packet_size = serialized_packet_.encrypted_length; |
+ } |
+ |
+ const int kNumPaddingBytes2 = 44; |
+ QuicFrames frames; |
+ frames.push_back(frame); |
+ char buffer[kMaxPacketSize]; |
+ PendingRetransmission retransmission(CreateRetransmission( |
+ frames, false /* has_crypto_handshake */, |
+ kNumPaddingBytes2 /* padding bytes */, ENCRYPTION_NONE, |
+ QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
+ EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
+ .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
+ creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
+ |
+ EXPECT_EQ(packet_size + kNumPaddingBytes2 - kNumPaddingBytes1, |
+ serialized_packet_.encrypted_length); |
+ delete frame.stream_frame; |
+} |
+ |
TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { |
const size_t overhead = GetPacketHeaderOverhead() + GetEncryptionOverhead() + |
GetStreamFrameOverhead(); |
@@ -514,7 +554,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { |
frames.push_back(frame); |
char buffer[kMaxPacketSize]; |
PendingRetransmission retransmission(CreateRetransmission( |
- frames, true /* has_crypto_handshake */, true /* needs padding */, |
+ frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
ENCRYPTION_NONE, |
QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |