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 175a80de2e21b9d96eb7d6c3dccec7d86f588ac7..77875d7c2de03a839e79b40ca06d2c4e0f249920 100644 |
--- a/net/quic/quic_sent_packet_manager_test.cc |
+++ b/net/quic/quic_sent_packet_manager_test.cc |
@@ -1019,6 +1019,25 @@ TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeout) { |
EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
} |
+TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeoutUnsentDataPacket) { |
+ // Send 2 crypto packets and serialize 1 data packet. |
+ const size_t kNumSentCryptoPackets = 2; |
+ for (size_t i = 1; i <= kNumSentCryptoPackets; ++i) { |
+ SendCryptoPacket(i); |
+ } |
+ SerializedPacket packet(CreateDataPacket(3)); |
+ manager_.OnSerializedPacket(packet); |
+ EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
+ |
+ // Retransmit 2 crypto packets, but not the serialized packet. |
+ EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2); |
+ manager_.OnRetransmissionTimeout(); |
+ RetransmitNextPacket(6); |
+ RetransmitNextPacket(7); |
+ EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
+ EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
+} |
+ |
TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) { |
// Send 100 packets and then ensure all are abandoned when the RTO fires. |
const size_t kNumSentPackets = 100; |