Call MarkConsumed() only once in QuicSpdyStreamBodyBuffer::MarkBodyConsumed() with a combined byte count.

This is a small behavioral change in preparation for a future CL which will make
MarkBodyConsumed() and also ReadBody() return the number of bytes to be consumed
by the caller.  Splitting out this change allows that future CL to be a pure API
change.  The ultimate motivation is much cleaner tests for
QuicSpdyStreamBodyBuffer.

gfe-relnote: n/a, change in QUIC v99-only code.
PiperOrigin-RevId: 259424818
Change-Id: I1a96285ac7fcdfc9eae2768c9f2b64b82a323929
diff --git a/quic/core/http/quic_spdy_stream_body_buffer.cc b/quic/core/http/quic_spdy_stream_body_buffer.cc
index d175e13..4238a3b 100644
--- a/quic/core/http/quic_spdy_stream_body_buffer.cc
+++ b/quic/core/http/quic_spdy_stream_body_buffer.cc
@@ -61,6 +61,7 @@
     }
   }
   // Consume headers.
+  size_t bytes_to_consume = 0;
   while (bytes_remaining_ < num_bytes) {
     if (frame_meta_.empty()) {
       QUIC_BUG << "Faild to consume because frame header buffer is empty.";
@@ -69,12 +70,14 @@
     auto meta = frame_meta_.front();
     frame_meta_.pop_front();
     bytes_remaining_ += meta.payload_length;
-    sequencer_->MarkConsumed(meta.header_length);
+    bytes_to_consume += meta.header_length;
   }
-  sequencer_->MarkConsumed(num_bytes);
+  bytes_to_consume += num_bytes;
   // Update accountings.
   bytes_remaining_ -= num_bytes;
   total_body_bytes_readable_ -= num_bytes;
+
+  sequencer_->MarkConsumed(bytes_to_consume);
 }
 
 int QuicSpdyStreamBodyBuffer::PeekBody(iovec* iov, size_t iov_len) const {
diff --git a/quic/core/http/quic_spdy_stream_body_buffer_test.cc b/quic/core/http/quic_spdy_stream_body_buffer_test.cc
index 6e8e20d..a47880e 100644
--- a/quic/core/http/quic_spdy_stream_body_buffer_test.cc
+++ b/quic/core/http/quic_spdy_stream_body_buffer_test.cc
@@ -95,8 +95,7 @@
   sequencer_.OnStreamFrame(frame);
   body_buffer_.OnDataHeader(lengths);
   body_buffer_.OnDataPayload(QuicStringPiece(body));
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length));
-  EXPECT_CALL(stream_, AddBytesConsumed(1024));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length + 1024));
   body_buffer_.MarkBodyConsumed(1024);
 }
 
@@ -128,11 +127,9 @@
   body_buffer_.OnDataHeader(lengths2);
   body_buffer_.OnDataPayload(QuicStringPiece(body2));
 
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length1));
-  EXPECT_CALL(stream_, AddBytesConsumed(512));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length1 + 512));
   body_buffer_.MarkBodyConsumed(512);
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length2));
-  EXPECT_CALL(stream_, AddBytesConsumed(2048));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length2 + 2048));
   body_buffer_.MarkBodyConsumed(2048);
   EXPECT_CALL(stream_, AddBytesConsumed(512));
   body_buffer_.MarkBodyConsumed(512);
@@ -164,8 +161,7 @@
   body_buffer_.OnDataHeader(lengths);
   body_buffer_.OnDataPayload(QuicStringPiece(body));
 
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length));
-  EXPECT_CALL(stream_, AddBytesConsumed(1024));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length + 1024));
 
   char base[1024];
   iovec iov = {&base[0], 1024};
@@ -204,8 +200,7 @@
   body_buffer_.OnDataPayload(QuicStringPiece(body2));
 
   // First read of 512 bytes.
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length1));
-  EXPECT_CALL(stream_, AddBytesConsumed(512));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length1 + 512));
   char base[512];
   iovec iov = {&base[0], 512};
   EXPECT_EQ(512u, body_buffer_.ReadBody(&iov, 1));
@@ -214,8 +209,7 @@
             QuicStringPiece(static_cast<const char*>(iov.iov_base), 512));
 
   // Second read of 2048 bytes.
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length2));
-  EXPECT_CALL(stream_, AddBytesConsumed(2048));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length2 + 2048));
   char base2[2048];
   iovec iov2 = {&base2[0], 2048};
   EXPECT_EQ(2048u, body_buffer_.ReadBody(&iov2, 1));