Surface receive_timestamp to QuicStream::OnStreamFrameAcked.
In order to surface to the application when a message (video frame in our case)
is received on the client--for logging and for online phase adjustment.
gfe-relnote: n/a (noop change)
PiperOrigin-RevId: 295743926
Change-Id: Icff772ef85cd7de4c4b758850456701c72b07897
diff --git a/quic/core/http/quic_headers_stream.cc b/quic/core/http/quic_headers_stream.cc
index 1bac2b7..1e7feb3 100644
--- a/quic/core/http/quic_headers_stream.cc
+++ b/quic/core/http/quic_headers_stream.cc
@@ -60,6 +60,7 @@
QuicByteCount data_length,
bool fin_acked,
QuicTime::Delta ack_delay_time,
+ QuicTime receive_timestamp,
QuicByteCount* newly_acked_length) {
QuicIntervalSet<QuicStreamOffset> newly_acked(offset, offset + data_length);
newly_acked.Difference(bytes_acked());
@@ -104,7 +105,8 @@
unacked_headers_.pop_front();
}
return QuicStream::OnStreamFrameAcked(offset, data_length, fin_acked,
- ack_delay_time, newly_acked_length);
+ ack_delay_time, receive_timestamp,
+ newly_acked_length);
}
void QuicHeadersStream::OnStreamFrameRetransmitted(QuicStreamOffset offset,
diff --git a/quic/core/http/quic_headers_stream.h b/quic/core/http/quic_headers_stream.h
index c54ce95..e97a78d 100644
--- a/quic/core/http/quic_headers_stream.h
+++ b/quic/core/http/quic_headers_stream.h
@@ -43,6 +43,7 @@
QuicByteCount data_length,
bool fin_acked,
QuicTime::Delta ack_delay_time,
+ QuicTime receive_timestamp,
QuicByteCount* newly_acked_length) override;
void OnStreamFrameRetransmitted(QuicStreamOffset offset,
diff --git a/quic/core/http/quic_headers_stream_test.cc b/quic/core/http/quic_headers_stream_test.cc
index aef31b1..68bbadf 100644
--- a/quic/core/http/quic_headers_stream_test.cc
+++ b/quic/core/http/quic_headers_stream_test.cc
@@ -863,29 +863,35 @@
EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 21, 7, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 21, 7, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(7u, newly_acked_length);
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 28, 7, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 28, 7, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(7u, newly_acked_length);
EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 35, 7, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 35, 7, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(7u, newly_acked_length);
EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _));
EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 0, 7, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 0, 7, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(7u, newly_acked_length);
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 7, 7, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 7, 7, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(7u, newly_acked_length);
// Unsent data is acked.
EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 14, 10, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 14, 10, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(7u, newly_acked_length);
}
@@ -922,19 +928,22 @@
EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
EXPECT_CALL(*ack_listener2, OnPacketAcked(2, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 17, 13, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 17, 13, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(13u, newly_acked_length);
EXPECT_CALL(*ack_listener2, OnPacketAcked(5, _));
EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 30, 12, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 30, 12, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(12u, newly_acked_length);
EXPECT_CALL(*ack_listener1, OnPacketAcked(14, _));
EXPECT_CALL(*ack_listener2, OnPacketAcked(3, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 0, 17, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 0, 17, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(17u, newly_acked_length);
}
@@ -964,7 +973,8 @@
QuicByteCount newly_acked_length = 0;
EXPECT_CALL(*ack_listener2, OnPacketAcked(5, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 15, 5, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 15, 5, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(5u, newly_acked_length);
EXPECT_CALL(*ack_listener1, OnPacketAcked(9, _));
@@ -972,24 +982,28 @@
EXPECT_CALL(*ack_listener2, OnPacketAcked(1, _));
EXPECT_CALL(*ack_listener3, OnPacketAcked(4, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 5, 20, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 5, 20, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(15u, newly_acked_length);
// Duplicate ack.
EXPECT_FALSE(headers_stream_->OnStreamFrameAcked(
- 10, 7, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 10, 7, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(0u, newly_acked_length);
EXPECT_CALL(*ack_listener1, OnPacketAcked(5, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 0, 12, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 0, 12, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(5u, newly_acked_length);
EXPECT_CALL(*ack_listener3, OnPacketAcked(3, _));
EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _));
EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
EXPECT_TRUE(headers_stream_->OnStreamFrameAcked(
- 22, 20, false, QuicTime::Delta::Zero(), &newly_acked_length));
+ 22, 20, false, QuicTime::Delta::Zero(), QuicTime::Zero(),
+ &newly_acked_length));
EXPECT_EQ(17u, newly_acked_length);
}
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 8625dae..67cc6b4 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -881,9 +881,11 @@
QuicByteCount data_length,
bool fin_acked,
QuicTime::Delta ack_delay_time,
+ QuicTime receive_timestamp,
QuicByteCount* newly_acked_length) {
const bool new_data_acked = QuicStream::OnStreamFrameAcked(
- offset, data_length, fin_acked, ack_delay_time, newly_acked_length);
+ offset, data_length, fin_acked, ack_delay_time, receive_timestamp,
+ newly_acked_length);
const QuicByteCount newly_acked_header_length =
GetNumFrameHeadersInInterval(offset, data_length);
diff --git a/quic/core/http/quic_spdy_stream.h b/quic/core/http/quic_spdy_stream.h
index 923ff7c..e231a35 100644
--- a/quic/core/http/quic_spdy_stream.h
+++ b/quic/core/http/quic_spdy_stream.h
@@ -140,6 +140,7 @@
QuicByteCount data_length,
bool fin_acked,
QuicTime::Delta ack_delay_time,
+ QuicTime receive_timestamp,
QuicByteCount* newly_acked_length) override;
// Override to report bytes retransmitted via ack_listener_.
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index aae249c..e68091d 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -1646,6 +1646,7 @@
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(9, _));
QuicByteCount newly_acked_length = 0;
EXPECT_TRUE(stream_->OnStreamFrameAcked(0, 9, false, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
// Stream is not waiting for acks as all sent data is acked.
EXPECT_FALSE(stream_->IsWaitingForAcks());
@@ -1667,6 +1668,7 @@
// kData2 is acked.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(9, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(9, 9, false, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
// Stream is waiting for acks as FIN is not acked.
EXPECT_TRUE(stream_->IsWaitingForAcks());
@@ -1675,6 +1677,7 @@
// FIN is acked.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(0, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(18, 0, true, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
EXPECT_FALSE(stream_->IsWaitingForAcks());
EXPECT_EQ(0u, QuicStreamPeer::SendBuffer(stream_).size());
@@ -1696,16 +1699,19 @@
QuicByteCount newly_acked_length = 0;
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(9, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(0, 9, false, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
EXPECT_EQ(2u, QuicStreamPeer::SendBuffer(stream_).size());
// Verify [9, 22) 13 bytes are acked.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(13, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(5, 17, false, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
EXPECT_EQ(1u, QuicStreamPeer::SendBuffer(stream_).size());
// Verify [22, 26) 4 bytes are acked.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(4, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(18, 8, false, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
EXPECT_EQ(1u, QuicStreamPeer::SendBuffer(stream_).size());
EXPECT_TRUE(stream_->IsWaitingForAcks());
@@ -1714,6 +1720,7 @@
// Verify [26, 27) 1 byte is acked.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(1, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(26, 1, false, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
EXPECT_EQ(0u, QuicStreamPeer::SendBuffer(stream_).size());
EXPECT_TRUE(stream_->IsWaitingForAcks());
@@ -1721,6 +1728,7 @@
// Ack Fin. Verify OnPacketAcked is called.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(0, _));
EXPECT_TRUE(stream_->OnStreamFrameAcked(27, 0, true, QuicTime::Delta::Zero(),
+ QuicTime::Zero(),
&newly_acked_length));
EXPECT_EQ(0u, QuicStreamPeer::SendBuffer(stream_).size());
EXPECT_FALSE(stream_->IsWaitingForAcks());
@@ -1728,8 +1736,9 @@
// Ack [10, 27) and fin.
// No new data is acked, verify OnPacketAcked is not called.
EXPECT_CALL(*mock_ack_listener, OnPacketAcked(_, _)).Times(0);
- EXPECT_FALSE(stream_->OnStreamFrameAcked(
- 10, 17, true, QuicTime::Delta::Zero(), &newly_acked_length));
+ EXPECT_FALSE(
+ stream_->OnStreamFrameAcked(10, 17, true, QuicTime::Delta::Zero(),
+ QuicTime::Zero(), &newly_acked_length));
EXPECT_EQ(0u, QuicStreamPeer::SendBuffer(stream_).size());
EXPECT_FALSE(stream_->IsWaitingForAcks());
}