| Index: net/quic/quic_sent_packet_manager_test.cc
|
| diff --git a/net/quic/quic_sent_packet_manager_test.cc b/net/quic/quic_sent_packet_manager_test.cc
|
| index 7d0bfeddd5675df3445e6c22589d9fa48075f3ab..900573bdef3eabc8ed98ee25e1439e123c7f2253 100644
|
| --- a/net/quic/quic_sent_packet_manager_test.cc
|
| +++ b/net/quic/quic_sent_packet_manager_test.cc
|
| @@ -191,6 +191,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| SerializedPacket packet(CreateDataPacket(sequence_number));
|
| packet.retransmittable_frames->AddStreamFrame(
|
| new QuicStreamFrame(1, false, 0, IOVector()));
|
| + packet.retransmittable_frames->set_encryption_level(ENCRYPTION_NONE);
|
| manager_.OnSerializedPacket(packet);
|
| manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(),
|
| packet.packet->length(), NOT_RETRANSMISSION,
|
| @@ -981,6 +982,36 @@ TEST_F(QuicSentPacketManagerTest,
|
| EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
|
| }
|
|
|
| +TEST_F(QuicSentPacketManagerTest,
|
| + CryptoHandshakeRetransmissionThenNeuterAndAck) {
|
| + // Send 1 crypto packet.
|
| + SendCryptoPacket(1);
|
| + EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
|
| +
|
| + // Retransmit the crypto packet as 2.
|
| + manager_.OnRetransmissionTimeout();
|
| + RetransmitNextPacket(2);
|
| +
|
| + // Now neuter all unacked unencrypted packets, which occurs when the
|
| + // connection goes forward secure.
|
| + manager_.NeuterUnencryptedPackets();
|
| + QuicPacketSequenceNumber unacked[] = { 1, 2 };
|
| + VerifyUnackedPackets(unacked, arraysize(unacked));
|
| + VerifyRetransmittablePackets(NULL, 0);
|
| + EXPECT_FALSE(manager_.HasPendingRetransmissions());
|
| + EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
|
| + EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
|
| +
|
| + // Ensure both packets get discarded when packet 2 is acked.
|
| + ReceivedPacketInfo received_info;
|
| + received_info.largest_observed = 2;
|
| + received_info.missing_packets.insert(1);
|
| + ExpectUpdatedRtt(2);
|
| + manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
|
| + VerifyUnackedPackets(NULL, 0);
|
| + VerifyRetransmittablePackets(NULL, 0);
|
| +}
|
| +
|
| TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) {
|
| QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
|
| // Serialize two data packets and send the latter.
|
|
|