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 5f977e0817ad7fcb74cf25ef30b9811c7eca0398..dad154b60ead8d49e753b4604a5ce0806708b0a5 100644 |
--- a/net/quic/quic_sent_packet_manager_test.cc |
+++ b/net/quic/quic_sent_packet_manager_test.cc |
@@ -30,6 +30,9 @@ namespace { |
// Default packet length. |
const uint32 kDefaultLength = 1000; |
+// Stream ID for data sent in CreatePacket(). |
+const QuicStreamId kStreamId = 7; |
+ |
// Matcher to check the key of the key-value pair it receives as first argument |
// equals its second argument. |
MATCHER(KeyEq, "") { |
@@ -177,9 +180,14 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { |
SerializedPacket CreatePacket(QuicPacketSequenceNumber sequence_number, |
bool retransmittable) { |
packets_.push_back(new QuicEncryptedPacket(nullptr, kDefaultLength)); |
- return SerializedPacket( |
- sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, packets_.back(), 0u, |
- retransmittable ? new RetransmittableFrames(ENCRYPTION_NONE) : nullptr); |
+ RetransmittableFrames* frames = nullptr; |
+ if (retransmittable) { |
+ frames = new RetransmittableFrames(ENCRYPTION_NONE); |
+ frames->AddStreamFrame( |
+ new QuicStreamFrame(kStreamId, false, 0, IOVector())); |
+ } |
+ return SerializedPacket(sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, |
+ packets_.back(), 0u, frames); |
} |
SerializedPacket CreateFecPacket(QuicPacketSequenceNumber sequence_number) { |
@@ -320,6 +328,23 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { |
EXPECT_EQ(0u, stats_.packets_spuriously_retransmitted); |
} |
+TEST_F(QuicSentPacketManagerTest, RetransmitThenStopRetransmittingBeforeSend) { |
+ SendDataPacket(1); |
+ QuicSentPacketManagerPeer::MarkForRetransmission(&manager_, 1, |
+ TLP_RETRANSMISSION); |
+ EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
+ |
+ manager_.CancelRetransmissionsForStream(kStreamId); |
+ |
+ // There should no longer be a pending retransmission. |
+ EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
+ |
+ QuicPacketSequenceNumber unacked[] = {1}; |
+ VerifyUnackedPackets(unacked, arraysize(unacked)); |
+ VerifyRetransmittablePackets(nullptr, 0); |
+ EXPECT_EQ(0u, stats_.packets_spuriously_retransmitted); |
+} |
+ |
TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) { |
SendDataPacket(1); |
RetransmitAndSendPacket(1, 2); |