| Index: net/quic/quic_ack_notifier.cc
 | 
| diff --git a/net/quic/quic_ack_notifier.cc b/net/quic/quic_ack_notifier.cc
 | 
| index 178098591fbcba268584b71e02afc20e97c51b09..b399a61bcc173541f22d65d49fe653caa6baa023 100644
 | 
| --- a/net/quic/quic_ack_notifier.cc
 | 
| +++ b/net/quic/quic_ack_notifier.cc
 | 
| @@ -14,19 +14,13 @@ using std::make_pair;
 | 
|  
 | 
|  namespace net {
 | 
|  
 | 
| -QuicAckNotifier::PacketInfo::PacketInfo() : packet_payload_size(0) {
 | 
| -}
 | 
| -
 | 
| -QuicAckNotifier::PacketInfo::PacketInfo(int payload_size)
 | 
| -    : packet_payload_size(payload_size) {
 | 
| -}
 | 
| -
 | 
|  QuicAckNotifier::DelegateInterface::DelegateInterface() {}
 | 
|  
 | 
|  QuicAckNotifier::DelegateInterface::~DelegateInterface() {}
 | 
|  
 | 
|  QuicAckNotifier::QuicAckNotifier(DelegateInterface* delegate)
 | 
|      : delegate_(delegate),
 | 
| +      unacked_packets_(0),
 | 
|        retransmitted_packet_count_(0),
 | 
|        retransmitted_byte_count_(0) {
 | 
|    DCHECK(delegate);
 | 
| @@ -38,16 +32,17 @@ QuicAckNotifier::~QuicAckNotifier() {
 | 
|  void QuicAckNotifier::AddSequenceNumber(
 | 
|      const QuicPacketSequenceNumber& sequence_number,
 | 
|      int packet_payload_size) {
 | 
| -  sequence_numbers_.insert(make_pair(sequence_number,
 | 
| -                                     PacketInfo(packet_payload_size)));
 | 
| -
 | 
| +  ++unacked_packets_;
 | 
|    DVLOG(1) << "AckNotifier waiting for packet: " << sequence_number;
 | 
|  }
 | 
|  
 | 
|  bool QuicAckNotifier::OnAck(QuicPacketSequenceNumber sequence_number,
 | 
|                              QuicTime::Delta delta_largest_observed) {
 | 
| -  DCHECK(ContainsKey(sequence_numbers_, sequence_number));
 | 
| -  sequence_numbers_.erase(sequence_number);
 | 
| +  if (unacked_packets_ <= 0) {
 | 
| +    LOG(DFATAL) << "Acked more packets than were tracked.";
 | 
| +    return true;
 | 
| +  }
 | 
| +  --unacked_packets_;
 | 
|    if (IsEmpty()) {
 | 
|      // We have seen all the sequence numbers we were waiting for, trigger
 | 
|      // callback notification.
 | 
| @@ -59,26 +54,9 @@ bool QuicAckNotifier::OnAck(QuicPacketSequenceNumber sequence_number,
 | 
|    return false;
 | 
|  }
 | 
|  
 | 
| -void QuicAckNotifier::UpdateSequenceNumber(
 | 
| -    QuicPacketSequenceNumber old_sequence_number,
 | 
| -    QuicPacketSequenceNumber new_sequence_number) {
 | 
| -  DCHECK(!ContainsKey(sequence_numbers_, new_sequence_number));
 | 
| -
 | 
| -  PacketInfo packet_info;
 | 
| -  auto it = sequence_numbers_.find(old_sequence_number);
 | 
| -  if (it != sequence_numbers_.end()) {
 | 
| -    packet_info = it->second;
 | 
| -    sequence_numbers_.erase(it);
 | 
| -  } else {
 | 
| -    DLOG(DFATAL) << "Old sequence number not found.";
 | 
| -  }
 | 
| -
 | 
| +void QuicAckNotifier::OnPacketRetransmitted(int packet_payload_size) {
 | 
|    ++retransmitted_packet_count_;
 | 
| -  retransmitted_byte_count_ += packet_info.packet_payload_size;
 | 
| -  sequence_numbers_.insert(make_pair(new_sequence_number, packet_info));
 | 
| -
 | 
| -  DVLOG(1) << "AckNotifier waiting for packet: " << new_sequence_number
 | 
| -           << " (retransmitted " << old_sequence_number << ").";
 | 
| +  retransmitted_byte_count_ += packet_payload_size;
 | 
|  }
 | 
|  
 | 
|  };  // namespace net
 | 
| 
 |