Make QuicheMemSlice deleter accept absl::string_view instead of const char*.

This is to make the callback compatible with `absl::MakeCordFromExternal`.

NOT generated via copybara

PiperOrigin-RevId: 738481743
diff --git a/quiche/common/platform/api/quiche_mem_slice.cc b/quiche/common/platform/api/quiche_mem_slice.cc
index ffe7b7e..87a0ed2 100644
--- a/quiche/common/platform/api/quiche_mem_slice.cc
+++ b/quiche/common/platform/api/quiche_mem_slice.cc
@@ -5,6 +5,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/strings/string_view.h"
 #include "quiche/common/quiche_buffer_allocator.h"
 #include "quiche/common/quiche_callbacks.h"
 
@@ -15,19 +16,19 @@
   QuicheUniqueBufferPtr owned = buffer.Release();
   QuicheBufferAllocator* allocator = owned.get_deleter().allocator();
   owned.release();
-  done_callback_ = [allocator](const char* ptr) {
-    allocator->Delete(const_cast<char*>(ptr));
+  done_callback_ = [allocator](absl::string_view ptr) {
+    allocator->Delete(const_cast<char*>(ptr.data()));
   };
 }
 
 QuicheMemSlice::QuicheMemSlice(std::unique_ptr<char[]> buffer, size_t length)
     : data_(buffer.release()),
       size_(length),
-      done_callback_(+[](const char* ptr) { delete[] ptr; }) {}
+      done_callback_(+[](absl::string_view ptr) { delete[] ptr.data(); }) {}
 
 QuicheMemSlice::QuicheMemSlice(
     const char* buffer, size_t length,
-    SingleUseCallback<void(const char*)> done_callback)
+    SingleUseCallback<void(absl::string_view)> done_callback)
     : data_(buffer), size_(length), done_callback_(std::move(done_callback)) {}
 
 // Move constructors. |other| will not hold a reference to the data buffer
@@ -55,7 +56,7 @@
 
 void QuicheMemSlice::Reset() {
   if (done_callback_ && data_ != nullptr) {
-    std::move(done_callback_)(data_);
+    std::move(done_callback_)(AsStringView());
   }
   data_ = nullptr;
   size_ = 0;
diff --git a/quiche/common/platform/api/quiche_mem_slice.h b/quiche/common/platform/api/quiche_mem_slice.h
index 1223999..4afe9c1 100644
--- a/quiche/common/platform/api/quiche_mem_slice.h
+++ b/quiche/common/platform/api/quiche_mem_slice.h
@@ -18,7 +18,7 @@
 // QuicheMemSlice is a memory buffer with a type-erased deleter callback.
 class QUICHE_EXPORT QuicheMemSlice {
  public:
-  using ReleaseCallback = SingleUseCallback<void(const char*)>;
+  using ReleaseCallback = SingleUseCallback<void(absl::string_view)>;
 
   // Constructs a empty QuicheMemSlice with no underlying data.
   QuicheMemSlice() = default;
diff --git a/quiche/common/platform/api/quiche_mem_slice_test.cc b/quiche/common/platform/api/quiche_mem_slice_test.cc
index f7e9736..7eeceb2 100644
--- a/quiche/common/platform/api/quiche_mem_slice_test.cc
+++ b/quiche/common/platform/api/quiche_mem_slice_test.cc
@@ -76,18 +76,21 @@
 }
 
 TEST_F(QuicheMemSliceTest, SliceCustomDoneCallback) {
-  const absl::string_view data("foo");
+  constexpr absl::string_view kData("foo");
   bool deleted = false;
 
-  char* buffer = new char[data.length()];
-  std::memcpy(buffer, data.data(), data.length());
+  char* buffer = new char[kData.length()];
+  std::memcpy(buffer, kData.data(), kData.length());
 
   {
-    QuicheMemSlice slice(buffer, data.length(), [&deleted](const char* data) {
-      deleted = true;
-      delete[] data;
-    });
-    EXPECT_EQ(data, slice.AsStringView());
+    QuicheMemSlice slice(
+        buffer, kData.length(),
+        [size = kData.size(), &deleted](absl::string_view slice) {
+          deleted = true;
+          EXPECT_EQ(slice.size(), size);
+          delete[] slice.data();
+        });
+    EXPECT_EQ(kData, slice.AsStringView());
   }
   EXPECT_TRUE(deleted);
 }
diff --git a/quiche/quic/moqt/moqt_cached_object.cc b/quiche/quic/moqt/moqt_cached_object.cc
index 1a455a0..9aef3e0 100644
--- a/quiche/quic/moqt/moqt_cached_object.cc
+++ b/quiche/quic/moqt/moqt_cached_object.cc
@@ -4,6 +4,7 @@
 
 #include "quiche/quic/moqt/moqt_cached_object.h"
 
+#include "absl/strings/string_view.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/common/platform/api/quiche_mem_slice.h"
 
@@ -18,7 +19,7 @@
   if (object.payload != nullptr && !object.payload->empty()) {
     result.payload = quiche::QuicheMemSlice(
         object.payload->data(), object.payload->length(),
-        [retained_pointer = object.payload](const char*) {});
+        [retained_pointer = object.payload](absl::string_view) {});
   }
   result.arrival_time = object.arrival_time;
   result.fin_after_this = object.fin_after_this;