Invoke the packet creator's OnFrameAddedToPacket method when stream frames are added via the fast path. gfe-relnote: n/a - not used in the GFE PiperOrigin-RevId: 240446816 Change-Id: I9d968c4d3c1fbcca1798cf0600121946e70ee9f5
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc index d9b481c..951fb81 100644 --- a/quic/core/quic_packet_creator.cc +++ b/quic/core/quic_packet_creator.cc
@@ -448,6 +448,9 @@ const bool set_fin = fin && (bytes_consumed == remaining_data_size); QuicStreamFrame frame(id, set_fin, stream_offset, bytes_consumed); + if (debug_delegate_ != nullptr) { + debug_delegate_->OnFrameAddedToPacket(QuicFrame(frame)); + } QUIC_DVLOG(1) << ENDPOINT << "Adding frame: " << frame; // TODO(ianswett): AppendTypeByte and AppendStreamFrame could be optimized
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc index 0826b08..66b92b9 100644 --- a/quic/core/quic_packet_creator_test.cc +++ b/quic/core/quic_packet_creator_test.cc
@@ -65,6 +65,13 @@ return params; } +class MockDebugDelegate : public QuicPacketCreator::DebugDelegate { + public: + ~MockDebugDelegate() override = default; + + MOCK_METHOD1(OnFrameAddedToPacket, void(const QuicFrame& frame)); +}; + class TestPacketCreator : public QuicPacketCreator { public: TestPacketCreator(QuicConnectionId connection_id, @@ -1237,9 +1244,12 @@ QuicPacketCreatorPeer::GetRetryTokenLengthLength(&creator_), 0, QuicPacketCreatorPeer::GetLengthLength(&creator_)), creator_.BytesFree()); + StrictMock<MockDebugDelegate> debug; + creator_.set_debug_delegate(&debug); // Add a variety of frame types and then a padding frame. QuicAckFrame ack_frame(InitAckFrame(10u)); + EXPECT_CALL(debug, OnFrameAddedToPacket(_)); EXPECT_TRUE( creator_.AddSavedFrame(QuicFrame(&ack_frame), NOT_RETRANSMISSION)); EXPECT_TRUE(creator_.HasPendingFrames()); @@ -1248,6 +1258,7 @@ QuicFrame frame; MakeIOVector("test", &iov_); + EXPECT_CALL(debug, OnFrameAddedToPacket(_)); ASSERT_TRUE(creator_.ConsumeData( QuicUtils::GetCryptoStreamId(client_framer_.transport_version()), &iov_, 1u, iov_.iov_len, 0u, 0u, false, false, NOT_RETRANSMISSION, &frame)); @@ -1258,6 +1269,7 @@ QuicUtils::GetCryptoStreamId(client_framer_.transport_version()))); QuicPaddingFrame padding_frame; + EXPECT_CALL(debug, OnFrameAddedToPacket(_)); EXPECT_TRUE( creator_.AddSavedFrame(QuicFrame(padding_frame), NOT_RETRANSMISSION)); EXPECT_TRUE(creator_.HasPendingFrames()); @@ -1308,6 +1320,9 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); size_t num_bytes_consumed; + StrictMock<MockDebugDelegate> debug; + creator_.set_debug_delegate(&debug); + EXPECT_CALL(debug, OnFrameAddedToPacket(_)); creator_.CreateAndSerializeStreamFrame( QuicUtils::GetHeadersStreamId(client_framer_.transport_version()), iov_.iov_len, 0, 0, true, NOT_RETRANSMISSION, &num_bytes_consumed);