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 77875d7c2de03a839e79b40ca06d2c4e0f249920..b0e861d921a8a465a3fec2fe9ecffff1adf15033 100644 |
--- a/net/quic/quic_sent_packet_manager_test.cc |
+++ b/net/quic/quic_sent_packet_manager_test.cc |
@@ -1038,6 +1038,23 @@ TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeoutUnsentDataPacket) { |
EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
} |
+TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { |
+ QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
+ // Serialize two data packets and send the latter. |
+ SerializedPacket packet(CreateDataPacket(1)); |
+ manager_.OnSerializedPacket(packet); |
+ SendDataPacket(2); |
+ EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
+ EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
+ |
+ // Retransmit 1 unacked packets, but not the first serialized packet. |
+ manager_.OnRetransmissionTimeout(); |
+ RetransmitNextPacket(3); |
+ EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
+ EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
+ EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
+} |
+ |
TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) { |
// Send 100 packets and then ensure all are abandoned when the RTO fires. |
const size_t kNumSentPackets = 100; |