Set `header_decoding_delay_` before calling methods. In QuicSpdyStream::OnHeadersDecoded(), set `header_decoding_delay_` before calling Http3DebugVisitor::OnHeadersDecoded() and OnStreamHeaderList(), to allow subclasses to record decoding delay, for example, in an OnInitialHeadersComplete() override. PiperOrigin-RevId: 642265512
diff --git a/quiche/quic/core/http/quic_spdy_stream.cc b/quiche/quic/core/http/quic_spdy_stream.cc index 1634202..7637c4c 100644 --- a/quiche/quic/core/http/quic_spdy_stream.cc +++ b/quiche/quic/core/http/quic_spdy_stream.cc
@@ -577,19 +577,9 @@ /* is_sent = */ false, headers.compressed_header_bytes(), headers.uncompressed_header_bytes()); - Http3DebugVisitor* const debug_visitor = spdy_session()->debug_visitor(); - if (debug_visitor) { - debug_visitor->OnHeadersDecoded(id(), headers); - } - - OnStreamHeaderList(/* fin = */ false, headers_payload_length_, headers); - header_decoding_delay_ = QuicTime::Delta::Zero(); if (blocked_on_decoding_headers_) { - blocked_on_decoding_headers_ = false; - // Continue decoding HTTP/3 frames. - OnDataAvailable(); const QuicTime now = session()->GetClock()->ApproximateNow(); if (!header_block_received_time_.IsInitialized() || now < header_block_received_time_) { @@ -598,6 +588,19 @@ header_decoding_delay_ = now - header_block_received_time_; } } + + Http3DebugVisitor* const debug_visitor = spdy_session()->debug_visitor(); + if (debug_visitor) { + debug_visitor->OnHeadersDecoded(id(), headers); + } + + OnStreamHeaderList(/* fin = */ false, headers_payload_length_, headers); + + if (blocked_on_decoding_headers_) { + blocked_on_decoding_headers_ = false; + // Continue decoding HTTP/3 frames. + OnDataAvailable(); + } } void QuicSpdyStream::OnHeaderDecodingError(QuicErrorCode error_code,