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/core/quic_stream_send_buffer_test.cc b/quic/core/quic_stream_send_buffer_test.cc
index 23a71fd..57e2bd1 100644
--- a/quic/core/quic_stream_send_buffer_test.cc
+++ b/quic/core/quic_stream_send_buffer_test.cc
@@ -12,6 +12,7 @@
#include "net/third_party/quiche/src/quic/platform/api/quic_expect_bug.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"
#include "net/third_party/quiche/src/quic/test_tools/quic_stream_send_buffer_peer.h"
#include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h"
@@ -287,6 +288,38 @@
QuicStreamSendBufferPeer::CurrentWriteSlice(&send_buffer_)->offset);
}
+TEST_F(QuicStreamSendBufferTest, SaveMemSliceSpan) {
+ SimpleBufferAllocator allocator;
+ QuicStreamSendBuffer send_buffer(&allocator);
+
+ char data[1024];
+ std::vector<std::pair<char*, size_t>> buffers;
+ for (size_t i = 0; i < 10; ++i) {
+ buffers.push_back(std::make_pair(data, 1024));
+ }
+ QuicTestMemSliceVector vector(buffers);
+
+ EXPECT_EQ(10 * 1024u, send_buffer.SaveMemSliceSpan(vector.span()));
+ EXPECT_EQ(10u, send_buffer.size());
+}
+
+TEST_F(QuicStreamSendBufferTest, SaveEmptyMemSliceSpan) {
+ SimpleBufferAllocator allocator;
+ QuicStreamSendBuffer send_buffer(&allocator);
+
+ char data[1024];
+ std::vector<std::pair<char*, size_t>> buffers;
+ for (size_t i = 0; i < 10; ++i) {
+ buffers.push_back(std::make_pair(data, 1024));
+ }
+ buffers.push_back(std::make_pair(nullptr, 0));
+ QuicTestMemSliceVector vector(buffers);
+
+ EXPECT_EQ(10 * 1024u, send_buffer.SaveMemSliceSpan(vector.span()));
+ // Verify the empty slice does not get saved.
+ EXPECT_EQ(10u, send_buffer.size());
+}
+
} // namespace
} // namespace test
} // namespace quic