Index: net/quic/quic_connection_test.cc |
diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc |
index 7fb41a9d1c7f67e859bd18a16940f25b82278e46..48a8dbce565bc560a835ccd7c39275b391a0ffac 100644 |
--- a/net/quic/quic_connection_test.cc |
+++ b/net/quic/quic_connection_test.cc |
@@ -1277,6 +1277,24 @@ TEST_P(QuicConnectionTest, AckReceiptCausesAckSend) { |
ProcessAckPacket(&frame2); |
} |
+TEST_P(QuicConnectionTest, 20AcksCausesAckSend) { |
+ EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
+ |
+ SendStreamDataToPeer(1, "foo", 0, !kFin, NULL); |
+ |
+ QuicAlarm* ack_alarm = QuicConnectionPeer::GetAckAlarm(&connection_); |
+ // But an ack with no missing packets will not send an ack. |
+ QuicAckFrame frame = InitAckFrame(1); |
+ EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
+ EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
+ .WillRepeatedly(Return(SequenceNumberSet())); |
+ for (int i = 0; i < 20; ++i) { |
+ EXPECT_FALSE(ack_alarm->IsSet()); |
+ ProcessAckPacket(&frame); |
+ } |
+ EXPECT_TRUE(ack_alarm->IsSet()); |
+} |
+ |
TEST_P(QuicConnectionTest, LeastUnackedLower) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
@@ -3013,6 +3031,7 @@ TEST_P(QuicConnectionTest, SendWhenDisconnected) { |
EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, false)); |
connection_.CloseConnection(QUIC_PEER_GOING_AWAY, false); |
EXPECT_FALSE(connection_.connected()); |
+ EXPECT_FALSE(connection_.CanWriteStreamData()); |
QuicPacket* packet = ConstructDataPacket(1, 0, !kEntropyFlag); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)).Times(0); |
connection_.SendPacket( |