Provide absl::Span<QuicMemSlice> version of WriteMemSlices()

The goal is to eventually deprecate QuicMemSliceSpan, thus reducing the amount of platform code we need to carry around.

PiperOrigin-RevId: 378444535
diff --git a/quic/core/quic_stream_send_buffer.cc b/quic/core/quic_stream_send_buffer.cc
index 3b1b37b..1e32e54 100644
--- a/quic/core/quic_stream_send_buffer.cc
+++ b/quic/core/quic_stream_send_buffer.cc
@@ -12,6 +12,7 @@
 #include "quic/platform/api/quic_flag_utils.h"
 #include "quic/platform/api/quic_flags.h"
 #include "quic/platform/api/quic_logging.h"
+#include "quic/platform/api/quic_mem_slice.h"
 
 namespace quic {
 
@@ -96,6 +97,20 @@
       [&](QuicMemSlice slice) { SaveMemSlice(std::move(slice)); });
 }
 
+QuicByteCount QuicStreamSendBuffer::SaveMemSliceSpan(
+    absl::Span<QuicMemSlice> span) {
+  QuicByteCount total = 0;
+  for (QuicMemSlice& slice : span) {
+    if (slice.length() == 0) {
+      // Skip empty slices.
+      continue;
+    }
+    total += slice.length();
+    SaveMemSlice(std::move(slice));
+  }
+  return total;
+}
+
 void QuicStreamSendBuffer::OnStreamDataConsumed(size_t bytes_consumed) {
   stream_bytes_written_ += bytes_consumed;
   stream_bytes_outstanding_ += bytes_consumed;