| 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 832b8b9b479487c242745aae6d2969a900c051aa..ee6f949f1aebfa590e0dc280ccac378cf1006b0e 100644
 | 
| --- a/net/quic/quic_sent_packet_manager_test.cc
 | 
| +++ b/net/quic/quic_sent_packet_manager_test.cc
 | 
| @@ -191,9 +191,7 @@ TEST_F(QuicSentPacketManagerTest, IsUnacked) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
 | 
| -  SerializedPacket serialized_packet(CreateDataPacket(1));
 | 
| -
 | 
| -  manager_.OnSerializedPacket(serialized_packet);
 | 
| +  SendDataPacket(1);
 | 
|    RetransmitPacket(1, 2);
 | 
|  
 | 
|    EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2));
 | 
| @@ -204,26 +202,26 @@ TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) {
 | 
| -  SerializedPacket serialized_packet(CreateDataPacket(1));
 | 
| -
 | 
| -  manager_.OnSerializedPacket(serialized_packet);
 | 
| -  RetransmitPacket(1, 2);
 | 
| +  SendDataPacket(1);
 | 
| +  RetransmitAndSendPacket(1, 2);
 | 
|  
 | 
|    // Ack 2 but not 1.
 | 
|    ReceivedPacketInfo received_info;
 | 
|    received_info.largest_observed = 2;
 | 
|    received_info.missing_packets.insert(1);
 | 
| +  EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
 | 
| +  EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)).Times(1);
 | 
|    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
|  
 | 
| -  // No unacked packets remain.
 | 
| -  VerifyUnackedPackets(NULL, 0);
 | 
| +  // Packet 1 is unacked, pending, but not retransmittable.
 | 
| +  QuicPacketSequenceNumber unacked[] = { 1 };
 | 
| +  VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| +  EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
 | 
|    VerifyRetransmittablePackets(NULL, 0);
 | 
|  }
 | 
|  
 | 
|  TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
 | 
| -  SerializedPacket serialized_packet(CreateDataPacket(1));
 | 
| -
 | 
| -  manager_.OnSerializedPacket(serialized_packet);
 | 
| +  SendDataPacket(1);
 | 
|    QuicSentPacketManagerPeer::MarkForRetransmission(
 | 
|        &manager_, 1, NACK_RETRANSMISSION);
 | 
|    EXPECT_TRUE(manager_.HasPendingRetransmissions());
 | 
| @@ -231,6 +229,8 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
 | 
|    // Ack 1.
 | 
|    ReceivedPacketInfo received_info;
 | 
|    received_info.largest_observed = 1;
 | 
| +  EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
 | 
| +  EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)).Times(1);
 | 
|    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
|  
 | 
|    // There should no longer be a pending retransmission.
 | 
| @@ -389,19 +389,23 @@ TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
 | 
| -  SerializedPacket serialized_packet(CreateDataPacket(1));
 | 
| -
 | 
| -  manager_.OnSerializedPacket(serialized_packet);
 | 
| -  RetransmitPacket(1, 2);
 | 
| -  RetransmitPacket(2, 3);
 | 
| -  RetransmitPacket(3, 4);
 | 
| +  SendDataPacket(1);
 | 
| +  RetransmitAndSendPacket(1, 2);
 | 
| +  RetransmitAndSendPacket(2, 3);
 | 
| +  RetransmitAndSendPacket(3, 4);
 | 
| +  RetransmitAndSendPacket(4, 5);
 | 
|  
 | 
| -  // Truncated ack with 2 NACKs
 | 
| +  // Truncated ack with 4 NACKs, so the first packet is lost.
 | 
|    ReceivedPacketInfo received_info;
 | 
| -  received_info.largest_observed = 2;
 | 
| +  received_info.largest_observed = 4;
 | 
|    received_info.missing_packets.insert(1);
 | 
|    received_info.missing_packets.insert(2);
 | 
| +  received_info.missing_packets.insert(3);
 | 
| +  received_info.missing_packets.insert(4);
 | 
|    received_info.is_truncated = true;
 | 
| +  EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
 | 
| +  EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _));
 | 
| +  EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _));
 | 
|    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
|  
 | 
|    // High water mark will be raised.
 | 
| @@ -412,12 +416,10 @@ TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
 | 
| -  SerializedPacket serialized_packet(CreateDataPacket(1));
 | 
| -
 | 
| -  manager_.OnSerializedPacket(serialized_packet);
 | 
| -  RetransmitPacket(1, 2);
 | 
| -  RetransmitPacket(2, 3);
 | 
| -  RetransmitPacket(3, 4);
 | 
| +  SendDataPacket(1);
 | 
| +  RetransmitAndSendPacket(1, 2);
 | 
| +  RetransmitAndSendPacket(2, 3);
 | 
| +  RetransmitAndSendPacket(3, 4);
 | 
|    manager_.OnSerializedPacket(CreateDataPacket(5));
 | 
|    manager_.OnSerializedPacket(CreateDataPacket(6));
 | 
|    manager_.OnSerializedPacket(CreateDataPacket(7));
 | 
| @@ -429,6 +431,8 @@ TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
 | 
|      ReceivedPacketInfo received_info;
 | 
|      received_info.largest_observed = 2;
 | 
|      received_info.missing_packets.insert(1);
 | 
| +    EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
 | 
| +    EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _));
 | 
|      manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
|      EXPECT_TRUE(manager_.IsUnacked(4));
 | 
|    }
 | 
| @@ -442,6 +446,9 @@ TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
 | 
|      received_info.missing_packets.insert(5);
 | 
|      received_info.missing_packets.insert(6);
 | 
|      received_info.is_truncated = true;
 | 
| +    EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
 | 
| +    EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(3, _));
 | 
| +    EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(4, _));
 | 
|      manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
|    }
 | 
|  
 | 
| @@ -452,130 +459,6 @@ TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
 | 
|    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
|  }
 | 
|  
 | 
| -TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(1));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(2));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(3));
 | 
| -
 | 
| -  {
 | 
| -    // Ack packets 1 and 3.
 | 
| -    ReceivedPacketInfo received_info;
 | 
| -    received_info.largest_observed = 3;
 | 
| -    received_info.missing_packets.insert(2);
 | 
| -    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
| -
 | 
| -    QuicPacketSequenceNumber unacked[] = { 2 };
 | 
| -    VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| -    QuicPacketSequenceNumber retransmittable[] = { 2 };
 | 
| -    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
| -  }
 | 
| -
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(4));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(5));
 | 
| -
 | 
| -  {
 | 
| -    // Ack packets 5.
 | 
| -    ReceivedPacketInfo received_info;
 | 
| -    received_info.largest_observed = 5;
 | 
| -    received_info.missing_packets.insert(2);
 | 
| -    received_info.missing_packets.insert(4);
 | 
| -    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
| -
 | 
| -    QuicPacketSequenceNumber unacked[] = { 2, 4 };
 | 
| -    VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| -    QuicPacketSequenceNumber retransmittable[] = { 2, 4 };
 | 
| -    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
| -  }
 | 
| -
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(6));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(7));
 | 
| -
 | 
| -  {
 | 
| -    // Ack packets 7.
 | 
| -    ReceivedPacketInfo received_info;
 | 
| -    received_info.largest_observed = 7;
 | 
| -    received_info.missing_packets.insert(2);
 | 
| -    received_info.missing_packets.insert(4);
 | 
| -    received_info.missing_packets.insert(6);
 | 
| -    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
| -
 | 
| -    QuicPacketSequenceNumber unacked[] = { 2, 4, 6 };
 | 
| -    VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| -    QuicPacketSequenceNumber retransmittable[] = { 2, 4, 6 };
 | 
| -    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
| -  }
 | 
| -
 | 
| -  RetransmitPacket(2, 8);
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(9));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(10));
 | 
| -
 | 
| -  {
 | 
| -    // Ack packet 10.
 | 
| -    ReceivedPacketInfo received_info;
 | 
| -    received_info.largest_observed = 10;
 | 
| -    received_info.missing_packets.insert(2);
 | 
| -    received_info.missing_packets.insert(4);
 | 
| -    received_info.missing_packets.insert(6);
 | 
| -    received_info.missing_packets.insert(8);
 | 
| -    received_info.missing_packets.insert(9);
 | 
| -    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
| -
 | 
| -    QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9 };
 | 
| -    VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| -    QuicPacketSequenceNumber retransmittable[] = { 4, 6, 8, 9 };
 | 
| -    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
| -  }
 | 
| -
 | 
| -
 | 
| -  RetransmitPacket(4, 11);
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(12));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(13));
 | 
| -
 | 
| -  {
 | 
| -    // Ack packet 13.
 | 
| -    ReceivedPacketInfo received_info;
 | 
| -    received_info.largest_observed = 13;
 | 
| -    received_info.missing_packets.insert(2);
 | 
| -    received_info.missing_packets.insert(4);
 | 
| -    received_info.missing_packets.insert(6);
 | 
| -    received_info.missing_packets.insert(8);
 | 
| -    received_info.missing_packets.insert(9);
 | 
| -    received_info.missing_packets.insert(11);
 | 
| -    received_info.missing_packets.insert(12);
 | 
| -    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
| -
 | 
| -    QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9, 11, 12 };
 | 
| -    VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| -    QuicPacketSequenceNumber retransmittable[] = { 6, 8, 9, 11, 12 };
 | 
| -    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
| -  }
 | 
| -
 | 
| -  RetransmitPacket(6, 14);
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(15));
 | 
| -  manager_.OnSerializedPacket(CreateDataPacket(16));
 | 
| -
 | 
| -  {
 | 
| -    // Ack packet 16.
 | 
| -    ReceivedPacketInfo received_info;
 | 
| -    received_info.largest_observed = 13;
 | 
| -    received_info.missing_packets.insert(2);
 | 
| -    received_info.missing_packets.insert(4);
 | 
| -    received_info.missing_packets.insert(6);
 | 
| -    received_info.missing_packets.insert(8);
 | 
| -    received_info.missing_packets.insert(9);
 | 
| -    received_info.missing_packets.insert(11);
 | 
| -    received_info.missing_packets.insert(12);
 | 
| -    received_info.is_truncated = true;
 | 
| -    manager_.OnIncomingAck(received_info, QuicTime::Zero());
 | 
| -
 | 
| -    // Truncated ack raises the high water mark by clearing out 2, 4, and 6.
 | 
| -    QuicPacketSequenceNumber unacked[] = { 8, 9, 11, 12, 14, 15, 16 };
 | 
| -    VerifyUnackedPackets(unacked, arraysize(unacked));
 | 
| -    QuicPacketSequenceNumber retransmittable[] = { 8, 9, 11, 12, 14, 15, 16 };
 | 
| -    VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) {
 | 
|    EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u));
 | 
|    EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
 | 
| 
 |