Moves QuicheMemSlice from the QUICHE platform directory to //third_party/quiche/common.

This library does not need to provide a platform-dependent implementation.

A vestigial header file and library target are left behind to ease migration.

Protected by refactoring, no functional change; not protected.

PiperOrigin-RevId: 758736172
diff --git a/build/source_list.bzl b/build/source_list.bzl
index ffe837a..e61db38 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -52,6 +52,7 @@
     "common/quiche_ip_address.h",
     "common/quiche_ip_address_family.h",
     "common/quiche_linked_hash_map.h",
+    "common/quiche_mem_slice.h",
     "common/quiche_mem_slice_storage.h",
     "common/quiche_protocol_flags_list.h",
     "common/quiche_random.h",
@@ -418,13 +419,13 @@
     "common/masque/connect_ip_datagram_payload.cc",
     "common/masque/connect_udp_datagram_payload.cc",
     "common/platform/api/quiche_hostname_utils.cc",
-    "common/platform/api/quiche_mem_slice.cc",
     "common/quiche_buffer_allocator.cc",
     "common/quiche_crypto_logging.cc",
     "common/quiche_data_reader.cc",
     "common/quiche_data_writer.cc",
     "common/quiche_ip_address.cc",
     "common/quiche_ip_address_family.cc",
+    "common/quiche_mem_slice.cc",
     "common/quiche_mem_slice_storage.cc",
     "common/quiche_random.cc",
     "common/quiche_simple_arena.cc",
@@ -1101,7 +1102,6 @@
     "common/platform/api/quiche_file_utils_test.cc",
     "common/platform/api/quiche_hostname_utils_test.cc",
     "common/platform/api/quiche_lower_case_string_test.cc",
-    "common/platform/api/quiche_mem_slice_test.cc",
     "common/platform/api/quiche_reference_counted_test.cc",
     "common/platform/api/quiche_stack_trace_test.cc",
     "common/platform/api/quiche_time_utils_test.cc",
@@ -1117,6 +1117,7 @@
     "common/quiche_ip_address_test.cc",
     "common/quiche_linked_hash_map_test.cc",
     "common/quiche_mem_slice_storage_test.cc",
+    "common/quiche_mem_slice_test.cc",
     "common/quiche_random_test.cc",
     "common/quiche_simple_arena_test.cc",
     "common/quiche_socket_address_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index c10fcd7..2fee7ac 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -52,6 +52,7 @@
     "src/quiche/common/quiche_ip_address.h",
     "src/quiche/common/quiche_ip_address_family.h",
     "src/quiche/common/quiche_linked_hash_map.h",
+    "src/quiche/common/quiche_mem_slice.h",
     "src/quiche/common/quiche_mem_slice_storage.h",
     "src/quiche/common/quiche_protocol_flags_list.h",
     "src/quiche/common/quiche_random.h",
@@ -418,13 +419,13 @@
     "src/quiche/common/masque/connect_ip_datagram_payload.cc",
     "src/quiche/common/masque/connect_udp_datagram_payload.cc",
     "src/quiche/common/platform/api/quiche_hostname_utils.cc",
-    "src/quiche/common/platform/api/quiche_mem_slice.cc",
     "src/quiche/common/quiche_buffer_allocator.cc",
     "src/quiche/common/quiche_crypto_logging.cc",
     "src/quiche/common/quiche_data_reader.cc",
     "src/quiche/common/quiche_data_writer.cc",
     "src/quiche/common/quiche_ip_address.cc",
     "src/quiche/common/quiche_ip_address_family.cc",
+    "src/quiche/common/quiche_mem_slice.cc",
     "src/quiche/common/quiche_mem_slice_storage.cc",
     "src/quiche/common/quiche_random.cc",
     "src/quiche/common/quiche_simple_arena.cc",
@@ -1102,7 +1103,6 @@
     "src/quiche/common/platform/api/quiche_file_utils_test.cc",
     "src/quiche/common/platform/api/quiche_hostname_utils_test.cc",
     "src/quiche/common/platform/api/quiche_lower_case_string_test.cc",
-    "src/quiche/common/platform/api/quiche_mem_slice_test.cc",
     "src/quiche/common/platform/api/quiche_reference_counted_test.cc",
     "src/quiche/common/platform/api/quiche_stack_trace_test.cc",
     "src/quiche/common/platform/api/quiche_time_utils_test.cc",
@@ -1118,6 +1118,7 @@
     "src/quiche/common/quiche_ip_address_test.cc",
     "src/quiche/common/quiche_linked_hash_map_test.cc",
     "src/quiche/common/quiche_mem_slice_storage_test.cc",
+    "src/quiche/common/quiche_mem_slice_test.cc",
     "src/quiche/common/quiche_random_test.cc",
     "src/quiche/common/quiche_simple_arena_test.cc",
     "src/quiche/common/quiche_socket_address_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index 54476e6..d51f52c 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -51,6 +51,7 @@
     "quiche/common/quiche_ip_address.h",
     "quiche/common/quiche_ip_address_family.h",
     "quiche/common/quiche_linked_hash_map.h",
+    "quiche/common/quiche_mem_slice.h",
     "quiche/common/quiche_mem_slice_storage.h",
     "quiche/common/quiche_protocol_flags_list.h",
     "quiche/common/quiche_random.h",
@@ -417,13 +418,13 @@
     "quiche/common/masque/connect_ip_datagram_payload.cc",
     "quiche/common/masque/connect_udp_datagram_payload.cc",
     "quiche/common/platform/api/quiche_hostname_utils.cc",
-    "quiche/common/platform/api/quiche_mem_slice.cc",
     "quiche/common/quiche_buffer_allocator.cc",
     "quiche/common/quiche_crypto_logging.cc",
     "quiche/common/quiche_data_reader.cc",
     "quiche/common/quiche_data_writer.cc",
     "quiche/common/quiche_ip_address.cc",
     "quiche/common/quiche_ip_address_family.cc",
+    "quiche/common/quiche_mem_slice.cc",
     "quiche/common/quiche_mem_slice_storage.cc",
     "quiche/common/quiche_random.cc",
     "quiche/common/quiche_simple_arena.cc",
@@ -1101,7 +1102,6 @@
     "quiche/common/platform/api/quiche_file_utils_test.cc",
     "quiche/common/platform/api/quiche_hostname_utils_test.cc",
     "quiche/common/platform/api/quiche_lower_case_string_test.cc",
-    "quiche/common/platform/api/quiche_mem_slice_test.cc",
     "quiche/common/platform/api/quiche_reference_counted_test.cc",
     "quiche/common/platform/api/quiche_stack_trace_test.cc",
     "quiche/common/platform/api/quiche_time_utils_test.cc",
@@ -1117,6 +1117,7 @@
     "quiche/common/quiche_ip_address_test.cc",
     "quiche/common/quiche_linked_hash_map_test.cc",
     "quiche/common/quiche_mem_slice_storage_test.cc",
+    "quiche/common/quiche_mem_slice_test.cc",
     "quiche/common/quiche_random_test.cc",
     "quiche/common/quiche_simple_arena_test.cc",
     "quiche/common/quiche_socket_address_test.cc",
diff --git a/quiche/common/platform/api/quiche_mem_slice.h b/quiche/common/platform/api/quiche_mem_slice.h
index 0cc2e0b..e08c738 100644
--- a/quiche/common/platform/api/quiche_mem_slice.h
+++ b/quiche/common/platform/api/quiche_mem_slice.h
@@ -1,76 +1,6 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
 #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_MEM_SLICE_H_
 #define QUICHE_COMMON_PLATFORM_API_QUICHE_MEM_SLICE_H_
 
-#include <cstddef>
-#include <memory>
-
-#include "absl/strings/string_view.h"
-#include "quiche/common/platform/api/quiche_export.h"
-#include "quiche/common/quiche_buffer_allocator.h"
-#include "quiche/common/quiche_callbacks.h"
-
-namespace quiche {
-
-// QuicheMemSlice is a memory buffer with a type-erased deleter callback.
-class QUICHE_EXPORT QuicheMemSlice {
- public:
-  using ReleaseCallback = SingleUseCallback<void(absl::string_view)>;
-
-  // Creates a QuicheMemSlice by allocating memory on heap and copying the
-  // specified bytes.
-  static QuicheMemSlice Copy(absl::string_view data);
-
-  // Constructs a empty QuicheMemSlice with no underlying data.
-  QuicheMemSlice() = default;
-
-  // Constructs a QuicheMemSlice that takes ownership of |buffer|.  The length
-  // of the |buffer| must not be zero.  To construct an empty QuicheMemSlice,
-  // use the zero-argument constructor instead.
-  explicit QuicheMemSlice(QuicheBuffer buffer);
-
-  // Constructs a QuicheMemSlice that takes ownership of |buffer| allocated on
-  // heap.  |length| must not be zero.
-  QuicheMemSlice(std::unique_ptr<char[]> buffer, size_t length);
-
-  // Constructs a QuicheMemSlice with a custom deleter callback.
-  QuicheMemSlice(const char* buffer, size_t length,
-                 ReleaseCallback done_callback);
-
-  QuicheMemSlice(const QuicheMemSlice& other) = delete;
-  QuicheMemSlice& operator=(const QuicheMemSlice& other) = delete;
-
-  // Move constructors. |other| will not hold a reference to the data buffer
-  // after this call completes.
-  QuicheMemSlice(QuicheMemSlice&& other);
-  QuicheMemSlice& operator=(QuicheMemSlice&& other);
-
-  ~QuicheMemSlice();
-
-  // Release the underlying reference. Further access the memory will result in
-  // undefined behavior.
-  void Reset();
-
-  // Returns a const char pointer to underlying data buffer.
-  const char* data() const { return data_; }
-  // Returns the length of underlying data buffer.
-  size_t length() const { return size_; }
-  // Returns the representation of the underlying data as a string view.
-  absl::string_view AsStringView() const {
-    return absl::string_view(data_, size_);
-  }
-
-  bool empty() const { return size_ == 0; }
-
- private:
-  const char* data_ = nullptr;
-  size_t size_ = 0;
-  ReleaseCallback done_callback_ = nullptr;
-};
-
-}  // namespace quiche
+#include "quiche/common/quiche_mem_slice.h"
 
 #endif  // QUICHE_COMMON_PLATFORM_API_QUICHE_MEM_SLICE_H_
diff --git a/quiche/common/platform/api/quiche_mem_slice.cc b/quiche/common/quiche_mem_slice.cc
similarity index 97%
rename from quiche/common/platform/api/quiche_mem_slice.cc
rename to quiche/common/quiche_mem_slice.cc
index 59f891f..84d1214 100644
--- a/quiche/common/platform/api/quiche_mem_slice.cc
+++ b/quiche/common/quiche_mem_slice.cc
@@ -1,4 +1,4 @@
-#include "quiche/common/platform/api/quiche_mem_slice.h"
+#include "quiche/common/quiche_mem_slice.h"
 
 #include <cstddef>
 #include <cstdlib>
diff --git a/quiche/common/quiche_mem_slice.h b/quiche/common/quiche_mem_slice.h
new file mode 100644
index 0000000..cf2d173
--- /dev/null
+++ b/quiche/common/quiche_mem_slice.h
@@ -0,0 +1,76 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_COMMON_QUICHE_MEM_SLICE_H_
+#define QUICHE_COMMON_QUICHE_MEM_SLICE_H_
+
+#include <cstddef>
+#include <memory>
+
+#include "absl/strings/string_view.h"
+#include "quiche/common/platform/api/quiche_export.h"
+#include "quiche/common/quiche_buffer_allocator.h"
+#include "quiche/common/quiche_callbacks.h"
+
+namespace quiche {
+
+// QuicheMemSlice is a memory buffer with a type-erased deleter callback.
+class QUICHE_EXPORT QuicheMemSlice {
+ public:
+  using ReleaseCallback = SingleUseCallback<void(absl::string_view)>;
+
+  // Creates a QuicheMemSlice by allocating memory on heap and copying the
+  // specified bytes.
+  static QuicheMemSlice Copy(absl::string_view data);
+
+  // Constructs a empty QuicheMemSlice with no underlying data.
+  QuicheMemSlice() = default;
+
+  // Constructs a QuicheMemSlice that takes ownership of |buffer|.  The length
+  // of the |buffer| must not be zero.  To construct an empty QuicheMemSlice,
+  // use the zero-argument constructor instead.
+  explicit QuicheMemSlice(QuicheBuffer buffer);
+
+  // Constructs a QuicheMemSlice that takes ownership of |buffer| allocated on
+  // heap.  |length| must not be zero.
+  QuicheMemSlice(std::unique_ptr<char[]> buffer, size_t length);
+
+  // Constructs a QuicheMemSlice with a custom deleter callback.
+  QuicheMemSlice(const char* buffer, size_t length,
+                 ReleaseCallback done_callback);
+
+  QuicheMemSlice(const QuicheMemSlice& other) = delete;
+  QuicheMemSlice& operator=(const QuicheMemSlice& other) = delete;
+
+  // Move constructors. |other| will not hold a reference to the data buffer
+  // after this call completes.
+  QuicheMemSlice(QuicheMemSlice&& other);
+  QuicheMemSlice& operator=(QuicheMemSlice&& other);
+
+  ~QuicheMemSlice();
+
+  // Release the underlying reference. Further access the memory will result in
+  // undefined behavior.
+  void Reset();
+
+  // Returns a const char pointer to underlying data buffer.
+  const char* data() const { return data_; }
+  // Returns the length of underlying data buffer.
+  size_t length() const { return size_; }
+  // Returns the representation of the underlying data as a string view.
+  absl::string_view AsStringView() const {
+    return absl::string_view(data_, size_);
+  }
+
+  bool empty() const { return size_ == 0; }
+
+ private:
+  const char* data_ = nullptr;
+  size_t size_ = 0;
+  ReleaseCallback done_callback_ = nullptr;
+};
+
+}  // namespace quiche
+
+#endif  // QUICHE_COMMON_QUICHE_MEM_SLICE_H_
diff --git a/quiche/common/quiche_mem_slice_storage.h b/quiche/common/quiche_mem_slice_storage.h
index 1439d63..f3b0285 100644
--- a/quiche/common/quiche_mem_slice_storage.h
+++ b/quiche/common/quiche_mem_slice_storage.h
@@ -11,8 +11,8 @@
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/platform/api/quiche_iovec.h"
-#include "quiche/common/platform/api/quiche_mem_slice.h"
 #include "quiche/common/quiche_buffer_allocator.h"
+#include "quiche/common/quiche_mem_slice.h"
 
 namespace quiche {
 
diff --git a/quiche/common/platform/api/quiche_mem_slice_test.cc b/quiche/common/quiche_mem_slice_test.cc
similarity index 98%
rename from quiche/common/platform/api/quiche_mem_slice_test.cc
rename to quiche/common/quiche_mem_slice_test.cc
index c4a5ab5..e891195 100644
--- a/quiche/common/platform/api/quiche_mem_slice_test.cc
+++ b/quiche/common/quiche_mem_slice_test.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/common/platform/api/quiche_mem_slice.h"
+#include "quiche/common/quiche_mem_slice.h"
 
 #include <cstring>
 #include <memory>