| Index: net/quic/quic_connection_test.cc
|
| diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc
|
| index 43c324b8167597e0b495991148708a5aa6b7ed58..38ead0ca1c0fd7e1520a5f865a068cb05105352d 100644
|
| --- a/net/quic/quic_connection_test.cc
|
| +++ b/net/quic/quic_connection_test.cc
|
| @@ -520,11 +520,7 @@ class TestConnection : public QuicConnection {
|
| // split needlessly across packet boundaries). As a result, we have separate
|
| // tests for some cases for this stream.
|
| QuicConsumedData SendCryptoStreamData() {
|
| - this->Flush();
|
| - QuicConsumedData consumed =
|
| - SendStreamDataWithString(kCryptoStreamId, "chlo", 0, !kFin, NULL);
|
| - this->Flush();
|
| - return consumed;
|
| + return SendStreamDataWithString(kCryptoStreamId, "chlo", 0, !kFin, NULL);
|
| }
|
|
|
| bool is_server() {
|
| @@ -1669,7 +1665,7 @@ TEST_P(QuicConnectionTest, FramePackingNonCryptoThenCrypto) {
|
| TEST_P(QuicConnectionTest, FramePackingCryptoThenNonCrypto) {
|
| CongestionBlockWrites();
|
|
|
| - // Send an ack and two stream frames (one crypto, then one non-crypto) in 3
|
| + // Send an ack and two stream frames (one crypto, then one non-crypto) in 2
|
| // packets by queueing them.
|
| connection_.SendAck();
|
| EXPECT_CALL(visitor_, OnCanWrite()).WillOnce(DoAll(
|
| @@ -1678,7 +1674,7 @@ TEST_P(QuicConnectionTest, FramePackingCryptoThenNonCrypto) {
|
| IgnoreResult(InvokeWithoutArgs(&connection_,
|
| &TestConnection::SendStreamData3))));
|
|
|
| - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3);
|
| + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2);
|
| CongestionUnblockWrites();
|
| connection_.GetSendAlarm()->Fire();
|
| EXPECT_EQ(0u, connection_.NumQueuedPackets());
|
| @@ -3062,6 +3058,28 @@ TEST_P(QuicConnectionTest, SendDelayedAckOnOutgoingCryptoPacket) {
|
| EXPECT_FALSE(connection_.GetAckAlarm()->IsSet());
|
| }
|
|
|
| +TEST_P(QuicConnectionTest, BundleAckForSecondCHLO) {
|
| + EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
|
| + EXPECT_FALSE(connection_.GetAckAlarm()->IsSet());
|
| + EXPECT_CALL(visitor_, OnCanWrite()).WillOnce(
|
| + IgnoreResult(InvokeWithoutArgs(&connection_,
|
| + &TestConnection::SendCryptoStreamData)));
|
| + // Process a packet from the crypto stream, which is frame1_'s default.
|
| + // Receiving the CHLO as packet 2 first will cause the connection to
|
| + // immediately send an ack, due to the packet gap.
|
| + ProcessPacket(2);
|
| + // Check that ack is sent and that delayed ack alarm is reset.
|
| + if (version() > QUIC_VERSION_15) {
|
| + EXPECT_EQ(3u, writer_->frame_count());
|
| + EXPECT_FALSE(writer_->stop_waiting_frames().empty());
|
| + } else {
|
| + EXPECT_EQ(2u, writer_->frame_count());
|
| + }
|
| + EXPECT_EQ(1u, writer_->stream_frames().size());
|
| + EXPECT_FALSE(writer_->ack_frames().empty());
|
| + EXPECT_FALSE(connection_.GetAckAlarm()->IsSet());
|
| +}
|
| +
|
| TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) {
|
| EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
|
| connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 0,
|
|
|