gfe-relnote: Remove the dependency from QuicMemSliceSpan to QuicStreamSendBuffer and QuicMessageFrame. Refactor only, not protected.

Currently, the (conceptually low level) QuicMemSliceSpan depends on (conceptually high level) QuicStreamSendBuffer and QuicMessageFrame classes, via QuicMemSliceSpan::SaveMemSlicesInSendBuffer and QuicMemSliceSpan::SaveMemSlicesAsMessageData. This change replace those functions by a new QuicMemSliceSpan::ConsumeAll method, which takes a callback instead of directly referring to QuicStreamSendBuffer and QuicMessageFrame.

PiperOrigin-RevId: 240908280
Change-Id: I83c87037586252c1335f3f1e198e6b62915e5698
diff --git a/quic/platform/api/quic_mem_slice_span.h b/quic/platform/api/quic_mem_slice_span.h
index 781382e..4fdf059 100644
--- a/quic/platform/api/quic_mem_slice_span.h
+++ b/quic/platform/api/quic_mem_slice_span.h
@@ -29,16 +29,9 @@
 
   ~QuicMemSliceSpan() = default;
 
-  // Save data buffers to |send_buffer| and returns the amount of saved data.
-  // |send_buffer| will hold a reference to all data buffer.
-  QuicByteCount SaveMemSlicesInSendBuffer(QuicStreamSendBuffer* send_buffer) {
-    return impl_.SaveMemSlicesInSendBuffer(send_buffer);
-  }
-
-  // Save data buffers as message data in |message_frame|. |message_frame| will
-  // hold a reference to all data buffers.
-  void SaveMemSlicesAsMessageData(QuicMessageFrame* message_frame) {
-    impl_.SaveMemSlicesAsMessageData(message_frame);
+  template <typename ConsumeFunction>
+  QuicByteCount ConsumeAll(ConsumeFunction consume) {
+    return impl_.ConsumeAll(consume);
   }
 
   // Return data of the span at |index| by the form of a QuicStringPiece.
diff --git a/quic/platform/api/quic_mem_slice_span_test.cc b/quic/platform/api/quic_mem_slice_span_test.cc
index b4c5e51..067a7a4 100644
--- a/quic/platform/api/quic_mem_slice_span_test.cc
+++ b/quic/platform/api/quic_mem_slice_span_test.cc
@@ -5,7 +5,7 @@
 #include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h"
 
 #include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
-#include "net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h"
+#include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test_mem_slice_vector.h"
@@ -26,23 +26,20 @@
   std::vector<std::pair<char*, size_t>> buffers_;
 };
 
-TEST_F(QuicMemSliceSpanImplTest, SaveDataInSendBuffer) {
+TEST_F(QuicMemSliceSpanImplTest, ConsumeAll) {
   SimpleBufferAllocator allocator;
-  QuicStreamSendBuffer send_buffer(&allocator);
   QuicTestMemSliceVector vector(buffers_);
 
-  EXPECT_EQ(10 * 1024u, vector.span().SaveMemSlicesInSendBuffer(&send_buffer));
-  EXPECT_EQ(10u, send_buffer.size());
-}
+  int num_slices = 0;
+  QuicByteCount bytes_consumed =
+      vector.span().ConsumeAll([&](QuicMemSlice slice) {
+        EXPECT_EQ(data_, slice.data());
+        EXPECT_EQ(1024, slice.length());
+        ++num_slices;
+      });
 
-TEST_F(QuicMemSliceSpanImplTest, SaveEmptyMemSliceInSendBuffer) {
-  SimpleBufferAllocator allocator;
-  QuicStreamSendBuffer send_buffer(&allocator);
-  buffers_.push_back(std::make_pair(nullptr, 0));
-  QuicTestMemSliceVector vector(buffers_);
-  EXPECT_EQ(10 * 1024u, vector.span().SaveMemSlicesInSendBuffer(&send_buffer));
-  // Verify the empty slice does not get saved.
-  EXPECT_EQ(10u, send_buffer.size());
+  EXPECT_EQ(10 * 1024u, bytes_consumed);
+  EXPECT_EQ(10, num_slices);
 }
 
 }  // namespace