Removes DataFrameSource-based DATA frame manipulation from NgHttp2Adapter.

Also removes associated utilities that are no longer necessary.

The `DataFrameSource` parts of the API are no longer used.

PiperOrigin-RevId: 699944678
diff --git a/quiche/http2/adapter/nghttp2_adapter.cc b/quiche/http2/adapter/nghttp2_adapter.cc
index 6e653f5..fd889c4 100644
--- a/quiche/http2/adapter/nghttp2_adapter.cc
+++ b/quiche/http2/adapter/nghttp2_adapter.cc
@@ -304,10 +304,11 @@
     absl::Span<const Header> headers,
     std::unique_ptr<DataFrameSource> data_source, bool end_stream,
     void* stream_user_data) {
+  QUICHE_DCHECK(data_source == nullptr);
   auto nvs = GetNghttp2Nvs(headers);
   std::unique_ptr<nghttp2_data_provider> provider;
 
-  if (data_source != nullptr || !end_stream) {
+  if (!end_stream) {
     provider = std::make_unique<nghttp2_data_provider>();
     provider->source.ptr = this;
     provider->read_callback = &DataFrameReadCallback;
@@ -316,9 +317,6 @@
   int32_t stream_id =
       nghttp2_submit_request(session_->raw_ptr(), nullptr, nvs.data(),
                              nvs.size(), provider.get(), stream_user_data);
-  if (data_source != nullptr) {
-    sources_.emplace(stream_id, std::move(data_source));
-  }
   QUICHE_VLOG(1) << "Submitted request with " << nvs.size()
                  << " request headers and user data " << stream_user_data
                  << "; resulted in stream " << stream_id;
@@ -329,16 +327,14 @@
                                    absl::Span<const Header> headers,
                                    std::unique_ptr<DataFrameSource> data_source,
                                    bool end_stream) {
+  QUICHE_DCHECK(data_source == nullptr);
   auto nvs = GetNghttp2Nvs(headers);
   std::unique_ptr<nghttp2_data_provider> provider;
-  if (data_source != nullptr || !end_stream) {
+  if (!end_stream) {
     provider = std::make_unique<nghttp2_data_provider>();
     provider->source.ptr = this;
     provider->read_callback = &DataFrameReadCallback;
   }
-  if (data_source != nullptr) {
-    sources_.emplace(stream_id, std::move(data_source));
-  }
 
   int result = nghttp2_submit_response(session_->raw_ptr(), stream_id,
                                        nvs.data(), nvs.size(), provider.get());
@@ -377,39 +373,22 @@
   }
 }
 
-void NgHttp2Adapter::RemoveStream(Http2StreamId stream_id) {
-  sources_.erase(stream_id);
-}
+void NgHttp2Adapter::RemoveStream(Http2StreamId /*stream_id*/) {}
 
 ssize_t NgHttp2Adapter::DelegateReadCallback(int32_t stream_id,
                                              size_t max_length,
                                              uint32_t* data_flags) {
-  auto it = sources_.find(stream_id);
-  if (it == sources_.end()) {
-    // A DataFrameSource is not available for this stream; forward to the
-    // visitor.
-    return callbacks::VisitorReadCallback(visitor_, stream_id, max_length,
-                                          data_flags);
-  } else {
-    // A DataFrameSource is available for this stream.
-    return callbacks::DataFrameSourceReadCallback(*it->second, max_length,
-                                                  data_flags);
-  }
+  // Forward to the visitor.
+  return callbacks::VisitorReadCallback(visitor_, stream_id, max_length,
+                                        data_flags);
 }
 
 int NgHttp2Adapter::DelegateSendCallback(int32_t stream_id,
                                          const uint8_t* framehd,
                                          size_t length) {
-  auto it = sources_.find(stream_id);
-  if (it == sources_.end()) {
-    // A DataFrameSource is not available for this stream; forward to the
-    // visitor.
-    visitor_.SendDataFrame(stream_id, ToStringView(framehd, kFrameHeaderSize),
-                           length);
-  } else {
-    // A DataFrameSource is available for this stream.
-    it->second->Send(ToStringView(framehd, kFrameHeaderSize), length);
-  }
+  // Forward to the visitor.
+  visitor_.SendDataFrame(stream_id, ToStringView(framehd, kFrameHeaderSize),
+                         length);
   return 0;
 }
 
diff --git a/quiche/http2/adapter/nghttp2_adapter.h b/quiche/http2/adapter/nghttp2_adapter.h
index c2e18be..69f5805 100644
--- a/quiche/http2/adapter/nghttp2_adapter.h
+++ b/quiche/http2/adapter/nghttp2_adapter.h
@@ -97,7 +97,7 @@
   void RemoveStream(Http2StreamId stream_id);
 
   // Accessor for testing.
-  size_t sources_size() const { return sources_.size(); }
+  size_t sources_size() const { return 0; }
   size_t stream_metadata_size() const { return stream_metadata_.size(); }
   size_t pending_metadata_count(Http2StreamId stream_id) const {
     if (auto it = stream_metadata_.find(stream_id);
@@ -139,8 +139,6 @@
       absl::InlinedVector<std::unique_ptr<MetadataSource>, 2>;
   using MetadataMap = absl::flat_hash_map<Http2StreamId, MetadataSourceVec>;
   MetadataMap stream_metadata_;
-
-  absl::flat_hash_map<int32_t, std::unique_ptr<DataFrameSource>> sources_;
 };
 
 }  // namespace adapter
diff --git a/quiche/http2/adapter/nghttp2_data_provider.cc b/quiche/http2/adapter/nghttp2_data_provider.cc
index 3475210..a775982 100644
--- a/quiche/http2/adapter/nghttp2_data_provider.cc
+++ b/quiche/http2/adapter/nghttp2_data_provider.cc
@@ -28,24 +28,6 @@
   return payload_length;
 }
 
-ssize_t DataFrameSourceReadCallback(DataFrameSource& source, size_t length,
-                                    uint32_t* data_flags) {
-  *data_flags |= NGHTTP2_DATA_FLAG_NO_COPY;
-  auto [result_length, done] = source.SelectPayloadLength(length);
-  if (result_length == 0 && !done) {
-    return NGHTTP2_ERR_DEFERRED;
-  } else if (result_length == DataFrameSource::kError) {
-    return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
-  }
-  if (done) {
-    *data_flags |= NGHTTP2_DATA_FLAG_EOF;
-  }
-  if (!source.send_fin()) {
-    *data_flags |= NGHTTP2_DATA_FLAG_NO_END_STREAM;
-  }
-  return result_length;
-}
-
 }  // namespace callbacks
 }  // namespace adapter
 }  // namespace http2
diff --git a/quiche/http2/adapter/nghttp2_data_provider.h b/quiche/http2/adapter/nghttp2_data_provider.h
index a0c9cd9..0686391 100644
--- a/quiche/http2/adapter/nghttp2_data_provider.h
+++ b/quiche/http2/adapter/nghttp2_data_provider.h
@@ -17,11 +17,6 @@
 ssize_t VisitorReadCallback(Http2VisitorInterface& visitor, int32_t stream_id,
                             size_t max_length, uint32_t* data_flags);
 
-// A callback that returns DATA frame payload size and associated flags, given a
-// DataFrameSource.
-ssize_t DataFrameSourceReadCallback(DataFrameSource& source, size_t length,
-                                    uint32_t* data_flags);
-
 }  // namespace callbacks
 }  // namespace adapter
 }  // namespace http2
diff --git a/quiche/http2/adapter/nghttp2_data_provider_test.cc b/quiche/http2/adapter/nghttp2_data_provider_test.cc
index 6ebc8b9..dc5c128 100644
--- a/quiche/http2/adapter/nghttp2_data_provider_test.cc
+++ b/quiche/http2/adapter/nghttp2_data_provider_test.cc
@@ -10,31 +10,6 @@
 
 const size_t kFrameHeaderSize = 9;
 
-// Verifies that the DataFrameSource read callback works correctly when the
-// amount of data read is less than what the source provides.
-TEST(DataFrameSourceTest, ReadLessThanSourceProvides) {
-  const int32_t kStreamId = 1;
-  TestVisitor visitor;
-  visitor.AppendPayloadForStream(kStreamId, "Example payload");
-  visitor.SetEndData(kStreamId, true);
-  VisitorDataSource source(visitor, kStreamId);
-  uint32_t data_flags = 0;
-  const size_t kReadLength = 10;
-  // Read callback selects a payload length given an upper bound.
-  ssize_t result =
-      callbacks::DataFrameSourceReadCallback(source, kReadLength, &data_flags);
-  ASSERT_EQ(kReadLength, result);
-  EXPECT_EQ(NGHTTP2_DATA_FLAG_NO_COPY | NGHTTP2_DATA_FLAG_NO_END_STREAM,
-            data_flags);
-
-  const uint8_t framehd[kFrameHeaderSize] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
-  // Sends the frame header and some payload bytes.
-  source.Send(ToStringView(framehd, kFrameHeaderSize), result);
-  // Data accepted by the visitor includes a frame header and kReadLength bytes
-  // of payload.
-  EXPECT_EQ(visitor.data().size(), kFrameHeaderSize + kReadLength);
-}
-
 // Verifies that the Visitor read callback works correctly when the amount of
 // data read is less than what the source provides.
 TEST(VisitorTest, ReadLessThanSourceProvides) {
@@ -60,31 +35,6 @@
   EXPECT_EQ(visitor.data().size(), kFrameHeaderSize + kReadLength);
 }
 
-// Verifies that the DataFrameSource read callback works correctly when the
-// amount of data read is more than what the source provides.
-TEST(DataFrameSourceTest, ReadMoreThanSourceProvides) {
-  const int32_t kStreamId = 1;
-  const absl::string_view kPayload = "Example payload";
-  TestVisitor visitor;
-  visitor.AppendPayloadForStream(kStreamId, kPayload);
-  visitor.SetEndData(kStreamId, true);
-  VisitorDataSource source(visitor, kStreamId);
-  uint32_t data_flags = 0;
-  const size_t kReadLength = 30;
-  // Read callback selects a payload length given an upper bound.
-  ssize_t result =
-      callbacks::DataFrameSourceReadCallback(source, kReadLength, &data_flags);
-  ASSERT_EQ(kPayload.size(), result);
-  EXPECT_EQ(NGHTTP2_DATA_FLAG_NO_COPY | NGHTTP2_DATA_FLAG_EOF, data_flags);
-
-  const uint8_t framehd[kFrameHeaderSize] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
-  // Sends the frame header and some payload bytes.
-  source.Send(ToStringView(framehd, kFrameHeaderSize), result);
-  // Data accepted by the visitor includes a frame header and the entire
-  // payload.
-  EXPECT_EQ(visitor.data().size(), kFrameHeaderSize + kPayload.size());
-}
-
 // Verifies that the Visitor read callback works correctly when the amount of
 // data read is more than what the source provides.
 TEST(VisitorTest, ReadMoreThanSourceProvides) {
@@ -93,7 +43,6 @@
   TestVisitor visitor;
   visitor.AppendPayloadForStream(kStreamId, kPayload);
   visitor.SetEndData(kStreamId, true);
-  VisitorDataSource source(visitor, kStreamId);
   uint32_t data_flags = 0;
   const size_t kReadLength = 30;
   // Read callback selects a payload length given an upper bound.
@@ -111,21 +60,6 @@
   EXPECT_EQ(visitor.data().size(), kFrameHeaderSize + kPayload.size());
 }
 
-// Verifies that the DataFrameSource read callback works correctly when the
-// source is blocked.
-TEST(DataFrameSourceTest, ReadFromBlockedSource) {
-  const int32_t kStreamId = 1;
-  TestVisitor visitor;
-  // Source has no payload, but also no fin, so it's blocked.
-  VisitorDataSource source(visitor, kStreamId);
-  uint32_t data_flags = 0;
-  const size_t kReadLength = 10;
-  ssize_t result =
-      callbacks::DataFrameSourceReadCallback(source, kReadLength, &data_flags);
-  // Read operation is deferred, since the source is blocked.
-  EXPECT_EQ(NGHTTP2_ERR_DEFERRED, result);
-}
-
 // Verifies that the Visitor read callback works correctly when the source is
 // blocked.
 TEST(VisitorTest, ReadFromBlockedSource) {
@@ -140,28 +74,6 @@
   EXPECT_EQ(NGHTTP2_ERR_DEFERRED, result);
 }
 
-// Verifies that the DataFrameSource read callback works correctly when the
-// source provides only fin and no data.
-TEST(DataFrameSourceTest, ReadFromZeroLengthSource) {
-  const int32_t kStreamId = 1;
-  TestVisitor visitor;
-  visitor.SetEndData(kStreamId, true);
-  // Empty payload and fin=true indicates the source is done.
-  VisitorDataSource source(visitor, kStreamId);
-  uint32_t data_flags = 0;
-  const size_t kReadLength = 10;
-  ssize_t result =
-      callbacks::DataFrameSourceReadCallback(source, kReadLength, &data_flags);
-  ASSERT_EQ(0, result);
-  EXPECT_EQ(NGHTTP2_DATA_FLAG_NO_COPY | NGHTTP2_DATA_FLAG_EOF, data_flags);
-
-  const uint8_t framehd[kFrameHeaderSize] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
-  source.Send(ToStringView(framehd, kFrameHeaderSize), result);
-  // Data accepted by the visitor includes a frame header with fin and zero
-  // bytes of payload.
-  EXPECT_EQ(visitor.data().size(), kFrameHeaderSize);
-}
-
 // Verifies that the Visitor read callback works correctly when the source
 // provides only fin and no data.
 TEST(VisitorTest, ReadFromZeroLengthSource) {