diff --git a/quic/core/frames/quic_crypto_frame.cc b/quic/core/frames/quic_crypto_frame.cc
index bef5f28..e804f27 100644
--- a/quic/core/frames/quic_crypto_frame.cc
+++ b/quic/core/frames/quic_crypto_frame.cc
@@ -4,8 +4,8 @@
 
 #include "net/third_party/quiche/src/quic/core/frames/quic_crypto_frame.h"
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -16,7 +16,7 @@
 
 QuicCryptoFrame::QuicCryptoFrame(EncryptionLevel level,
                                  QuicStreamOffset offset,
-                                 quiche::QuicheStringPiece data)
+                                 absl::string_view data)
     : QuicCryptoFrame(level, offset, data.data(), data.length()) {}
 
 QuicCryptoFrame::QuicCryptoFrame(EncryptionLevel level,
diff --git a/quic/core/frames/quic_crypto_frame.h b/quic/core/frames/quic_crypto_frame.h
index 2bb7a08..a8f0fe3 100644
--- a/quic/core/frames/quic_crypto_frame.h
+++ b/quic/core/frames/quic_crypto_frame.h
@@ -8,10 +8,10 @@
 #include <memory>
 #include <ostream>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -22,7 +22,7 @@
                   QuicPacketLength data_length);
   QuicCryptoFrame(EncryptionLevel level,
                   QuicStreamOffset offset,
-                  quiche::QuicheStringPiece data);
+                  absl::string_view data);
   ~QuicCryptoFrame();
 
   friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
diff --git a/quic/core/frames/quic_stream_frame.cc b/quic/core/frames/quic_stream_frame.cc
index db19999..728d320 100644
--- a/quic/core/frames/quic_stream_frame.cc
+++ b/quic/core/frames/quic_stream_frame.cc
@@ -4,8 +4,8 @@
 
 #include "net/third_party/quiche/src/quic/core/frames/quic_stream_frame.h"
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -14,7 +14,7 @@
 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id,
                                  bool fin,
                                  QuicStreamOffset offset,
-                                 quiche::QuicheStringPiece data)
+                                 absl::string_view data)
     : QuicStreamFrame(stream_id, fin, offset, data.data(), data.length()) {}
 
 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id,
diff --git a/quic/core/frames/quic_stream_frame.h b/quic/core/frames/quic_stream_frame.h
index 10ad7db..32b2c74 100644
--- a/quic/core/frames/quic_stream_frame.h
+++ b/quic/core/frames/quic_stream_frame.h
@@ -8,11 +8,11 @@
 #include <memory>
 #include <ostream>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h"
 #include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -22,7 +22,7 @@
   QuicStreamFrame(QuicStreamId stream_id,
                   bool fin,
                   QuicStreamOffset offset,
-                  quiche::QuicheStringPiece data);
+                  absl::string_view data);
   QuicStreamFrame(QuicStreamId stream_id,
                   bool fin,
                   QuicStreamOffset offset,
diff --git a/quic/core/qpack/fuzzer/qpack_decoder_fuzzer.cc b/quic/core/qpack/fuzzer/qpack_decoder_fuzzer.cc
index d5afa99..2139418 100644
--- a/quic/core/qpack/fuzzer/qpack_decoder_fuzzer.cc
+++ b/quic/core/qpack/fuzzer/qpack_decoder_fuzzer.cc
@@ -7,11 +7,11 @@
 #include <limits>
 #include <utility>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_decoder.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_fuzzed_data_provider.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_decoder_test_utils.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_test_utils.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 namespace test {
@@ -30,8 +30,7 @@
   ErrorDelegate(bool* error_detected) : error_detected_(error_detected) {}
   ~ErrorDelegate() override = default;
 
-  void OnEncoderStreamError(
-      quiche::QuicheStringPiece /*error_message*/) override {
+  void OnEncoderStreamError(absl::string_view /*error_message*/) override {
     *error_detected_ = true;
   }
 
@@ -51,8 +50,8 @@
         error_detected_(error_detected) {}
   ~HeadersHandler() override = default;
 
-  void OnHeaderDecoded(quiche::QuicheStringPiece /*name*/,
-                       quiche::QuicheStringPiece /*value*/) override {}
+  void OnHeaderDecoded(absl::string_view /*name*/,
+                       absl::string_view /*value*/) override {}
 
   // Remove DecoderAndHandler from |*processing_decoders|.
   void OnDecodingCompleted() override {
@@ -61,8 +60,7 @@
     CHECK_EQ(1u, result);
   }
 
-  void OnDecodingErrorDetected(
-      quiche::QuicheStringPiece /*error_message*/) override {
+  void OnDecodingErrorDetected(absl::string_view /*error_message*/) override {
     *error_detected_ = true;
   }
 
diff --git a/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc b/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc
index 78467a8..ce2ef54 100644
--- a/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc
+++ b/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc
@@ -7,9 +7,9 @@
 #include <cstddef>
 #include <cstdint>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_fuzzed_data_provider.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 namespace test {
@@ -24,14 +24,12 @@
 
   void OnInsertWithNameReference(bool /*is_static*/,
                                  uint64_t /*name_index*/,
-                                 quiche::QuicheStringPiece /*value*/) override {
-  }
-  void OnInsertWithoutNameReference(
-      quiche::QuicheStringPiece /*name*/,
-      quiche::QuicheStringPiece /*value*/) override {}
+                                 absl::string_view /*value*/) override {}
+  void OnInsertWithoutNameReference(absl::string_view /*name*/,
+                                    absl::string_view /*value*/) override {}
   void OnDuplicate(uint64_t /*index*/) override {}
   void OnSetDynamicTableCapacity(uint64_t /*capacity*/) override {}
-  void OnErrorDetected(quiche::QuicheStringPiece /*error_message*/) override {
+  void OnErrorDetected(absl::string_view /*error_message*/) override {
     error_detected_ = true;
   }
 
diff --git a/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc b/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
index 8c94f1e..c14add3 100644
--- a/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
+++ b/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
@@ -8,6 +8,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/http/quic_header_list.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_decoded_headers_accumulator.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_decoder.h"
@@ -18,7 +19,6 @@
 #include "net/third_party/quiche/src/quic/platform/api/quic_fuzzed_data_provider.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_decoder_test_utils.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_encoder_peer.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_header_block.h"
 
 namespace quic {
@@ -64,8 +64,7 @@
    public:
     ~CrashingDecoderStreamErrorDelegate() override = default;
 
-    void OnDecoderStreamError(
-        quiche::QuicheStringPiece error_message) override {
+    void OnDecoderStreamError(absl::string_view error_message) override {
       CHECK(false) << error_message;
     }
   };
@@ -92,7 +91,7 @@
     virtual void OnHeaderBlockStart(QuicStreamId stream_id) = 0;
     // Called when part or all of a header block is transmitted.
     virtual void OnHeaderBlockFragment(QuicStreamId stream_id,
-                                       quiche::QuicheStringPiece data) = 0;
+                                       absl::string_view data) = 0;
     // Called when transmission of a header block is complete.
     virtual void OnHeaderBlockEnd(QuicStreamId stream_id) = 0;
   };
@@ -205,19 +204,16 @@
 
     size_t RemainingLength() const { return data_.length() - offset_; }
 
-    quiche::QuicheStringPiece Consume(size_t length) {
+    absl::string_view Consume(size_t length) {
       DCHECK_NE(0u, length);
       DCHECK_LE(length, RemainingLength());
 
-      quiche::QuicheStringPiece consumed =
-          quiche::QuicheStringPiece(&data_[offset_], length);
+      absl::string_view consumed = absl::string_view(&data_[offset_], length);
       offset_ += length;
       return consumed;
     }
 
-    quiche::QuicheStringPiece ConsumeRemaining() {
-      return Consume(RemainingLength());
-    }
+    absl::string_view ConsumeRemaining() { return Consume(RemainingLength()); }
 
    private:
     // Complete header block.
@@ -279,11 +275,11 @@
     visitor_->OnHeaderBlockDecoded(stream_id_);
   }
 
-  void OnHeaderDecodingError(quiche::QuicheStringPiece error_message) override {
+  void OnHeaderDecodingError(absl::string_view error_message) override {
     CHECK(false) << error_message;
   }
 
-  void Decode(quiche::QuicheStringPiece data) { accumulator_.Decode(data); }
+  void Decode(absl::string_view data) { accumulator_.Decode(data); }
 
   void EndHeaderBlock() { accumulator_.EndHeaderBlock(); }
 
@@ -362,7 +358,7 @@
   }
 
   void OnHeaderBlockFragment(QuicStreamId stream_id,
-                             quiche::QuicheStringPiece data) override {
+                             absl::string_view data) override {
     auto it = verifying_decoders_.find(stream_id);
     CHECK(it != verifying_decoders_.end());
     it->second->Decode(data);
@@ -381,8 +377,7 @@
    public:
     ~CrashingEncoderStreamErrorDelegate() override = default;
 
-    void OnEncoderStreamError(
-        quiche::QuicheStringPiece error_message) override {
+    void OnEncoderStreamError(absl::string_view error_message) override {
       CHECK(false) << error_message;
     }
   };
@@ -412,7 +407,7 @@
   ~DelayedStreamDataTransmitter() { CHECK(stream_data.empty()); }
 
   // QpackStreamSenderDelegate implementation.
-  void WriteStreamData(quiche::QuicheStringPiece data) override {
+  void WriteStreamData(absl::string_view data) override {
     stream_data.push(std::string(data.data(), data.size()));
   }
 
diff --git a/quic/qbone/platform/icmp_packet.cc b/quic/qbone/platform/icmp_packet.cc
index e64dbba..4a60e26 100644
--- a/quic/qbone/platform/icmp_packet.cc
+++ b/quic/qbone/platform/icmp_packet.cc
@@ -6,9 +6,9 @@
 
 #include <netinet/ip6.h>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/qbone/platform/internet_checksum.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 namespace {
@@ -36,12 +36,11 @@
 
 }  // namespace
 
-void CreateIcmpPacket(
-    in6_addr src,
-    in6_addr dst,
-    const icmp6_hdr& icmp_header,
-    quiche::QuicheStringPiece body,
-    const std::function<void(quiche::QuicheStringPiece)>& cb) {
+void CreateIcmpPacket(in6_addr src,
+                      in6_addr dst,
+                      const icmp6_hdr& icmp_header,
+                      absl::string_view body,
+                      const std::function<void(absl::string_view)>& cb) {
   const size_t body_size = std::min(body.size(), kICMPv6BodyMaxSize);
   const size_t payload_size = kICMPv6HeaderSize + body_size;
 
@@ -82,7 +81,7 @@
   const char* packet = reinterpret_cast<char*>(&icmp_packet);
   const size_t packet_size = offsetof(ICMPv6Packet, body) + body_size;
 
-  cb(quiche::QuicheStringPiece(packet, packet_size));
+  cb(absl::string_view(packet, packet_size));
 }
 
 }  // namespace quic
diff --git a/quic/qbone/platform/icmp_packet.h b/quic/qbone/platform/icmp_packet.h
index a762679..ca3fc43 100644
--- a/quic/qbone/platform/icmp_packet.h
+++ b/quic/qbone/platform/icmp_packet.h
@@ -10,8 +10,8 @@
 
 #include <functional>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ip_address.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -21,8 +21,8 @@
 void CreateIcmpPacket(in6_addr src,
                       in6_addr dst,
                       const icmp6_hdr& icmp_header,
-                      quiche::QuicheStringPiece body,
-                      const std::function<void(quiche::QuicheStringPiece)>& cb);
+                      absl::string_view body,
+                      const std::function<void(absl::string_view)>& cb);
 
 }  // namespace quic
 
diff --git a/quic/qbone/platform/icmp_packet_test.cc b/quic/qbone/platform/icmp_packet_test.cc
index 30fbe21..08623e1 100644
--- a/quic/qbone/platform/icmp_packet_test.cc
+++ b/quic/qbone/platform/icmp_packet_test.cc
@@ -8,8 +8,8 @@
 
 #include <cstdint>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 namespace quic {
@@ -85,12 +85,12 @@
   icmp_header.icmp6_id = 0x82cb;
   icmp_header.icmp6_seq = 0x0100;
 
-  quiche::QuicheStringPiece message_body = quiche::QuicheStringPiece(
+  absl::string_view message_body = absl::string_view(
       reinterpret_cast<const char*>(kReferenceICMPMessageBody), 56);
-  quiche::QuicheStringPiece expected_packet = quiche::QuicheStringPiece(
+  absl::string_view expected_packet = absl::string_view(
       reinterpret_cast<const char*>(kReferenceICMPPacket), 104);
   CreateIcmpPacket(src_addr, dst_addr, icmp_header, message_body,
-                   [&expected_packet](quiche::QuicheStringPiece packet) {
+                   [&expected_packet](absl::string_view packet) {
                      QUIC_LOG(INFO) << quiche::QuicheTextUtils::HexDump(packet);
                      ASSERT_EQ(packet, expected_packet);
                    });
@@ -114,12 +114,12 @@
   // Set the checksum to a bogus value
   icmp_header.icmp6_cksum = 0x1234;
 
-  quiche::QuicheStringPiece message_body = quiche::QuicheStringPiece(
+  absl::string_view message_body = absl::string_view(
       reinterpret_cast<const char*>(kReferenceICMPMessageBody), 56);
-  quiche::QuicheStringPiece expected_packet = quiche::QuicheStringPiece(
+  absl::string_view expected_packet = absl::string_view(
       reinterpret_cast<const char*>(kReferenceICMPPacket), 104);
   CreateIcmpPacket(src_addr, dst_addr, icmp_header, message_body,
-                   [&expected_packet](quiche::QuicheStringPiece packet) {
+                   [&expected_packet](absl::string_view packet) {
                      QUIC_LOG(INFO) << quiche::QuicheTextUtils::HexDump(packet);
                      ASSERT_EQ(packet, expected_packet);
                    });
diff --git a/quic/qbone/platform/tcp_packet.cc b/quic/qbone/platform/tcp_packet.cc
index 6da9faa..3245f41 100644
--- a/quic/qbone/platform/tcp_packet.cc
+++ b/quic/qbone/platform/tcp_packet.cc
@@ -6,10 +6,10 @@
 
 #include <netinet/ip6.h>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 #include "net/third_party/quiche/src/quic/qbone/platform/internet_checksum.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 namespace {
@@ -30,9 +30,8 @@
 
 }  // namespace
 
-void CreateTcpResetPacket(
-    quiche::QuicheStringPiece original_packet,
-    const std::function<void(quiche::QuicheStringPiece)>& cb) {
+void CreateTcpResetPacket(absl::string_view original_packet,
+                          const std::function<void(absl::string_view)>& cb) {
   // By the time this method is called, original_packet should be fairly
   // strongly validated. However, it's better to be more paranoid than not, so
   // here are a bunch of very obvious checks.
@@ -121,7 +120,7 @@
 
   const char* packet = reinterpret_cast<char*>(&tcp_packet);
 
-  cb(quiche::QuicheStringPiece(packet, sizeof(tcp_packet)));
+  cb(absl::string_view(packet, sizeof(tcp_packet)));
 }
 
 }  // namespace quic
diff --git a/quic/qbone/platform/tcp_packet.h b/quic/qbone/platform/tcp_packet.h
index bb1364b..2038fab 100644
--- a/quic/qbone/platform/tcp_packet.h
+++ b/quic/qbone/platform/tcp_packet.h
@@ -10,16 +10,15 @@
 
 #include <functional>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ip_address.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
 // Creates an TCPv6 RST packet, returning a packed string representation of the
 // packet to |cb|.
-void CreateTcpResetPacket(
-    quiche::QuicheStringPiece original_packet,
-    const std::function<void(quiche::QuicheStringPiece)>& cb);
+void CreateTcpResetPacket(absl::string_view original_packet,
+                          const std::function<void(absl::string_view)>& cb);
 
 }  // namespace quic
 
diff --git a/quic/qbone/platform/tcp_packet_test.cc b/quic/qbone/platform/tcp_packet_test.cc
index 84645c8..a143195 100644
--- a/quic/qbone/platform/tcp_packet_test.cc
+++ b/quic/qbone/platform/tcp_packet_test.cc
@@ -8,8 +8,8 @@
 
 #include <cstdint>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 namespace quic {
@@ -102,17 +102,16 @@
 }  // namespace
 
 TEST(TcpPacketTest, CreatedPacketMatchesReference) {
-  quiche::QuicheStringPiece syn = quiche::QuicheStringPiece(
-      reinterpret_cast<const char*>(kReferenceTCPSYNPacket),
-      sizeof(kReferenceTCPSYNPacket));
-  quiche::QuicheStringPiece expected_packet = quiche::QuicheStringPiece(
-      reinterpret_cast<const char*>(kReferenceTCPRSTPacket),
-      sizeof(kReferenceTCPRSTPacket));
-  CreateTcpResetPacket(
-      syn, [&expected_packet](quiche::QuicheStringPiece packet) {
-        QUIC_LOG(INFO) << quiche::QuicheTextUtils::HexDump(packet);
-        ASSERT_EQ(packet, expected_packet);
-      });
+  absl::string_view syn =
+      absl::string_view(reinterpret_cast<const char*>(kReferenceTCPSYNPacket),
+                        sizeof(kReferenceTCPSYNPacket));
+  absl::string_view expected_packet =
+      absl::string_view(reinterpret_cast<const char*>(kReferenceTCPRSTPacket),
+                        sizeof(kReferenceTCPRSTPacket));
+  CreateTcpResetPacket(syn, [&expected_packet](absl::string_view packet) {
+    QUIC_LOG(INFO) << quiche::QuicheTextUtils::HexDump(packet);
+    ASSERT_EQ(packet, expected_packet);
+  });
 }
 
 }  // namespace quic
diff --git a/quic/test_tools/fuzzing/quic_framer_fuzzer.cc b/quic/test_tools/fuzzing/quic_framer_fuzzer.cc
index a63f963..a095750 100644
--- a/quic/test_tools/fuzzing/quic_framer_fuzzer.cc
+++ b/quic/test_tools/fuzzing/quic_framer_fuzzer.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/crypto/crypto_framer.h"
 #include "net/third_party/quiche/src/quic/core/crypto/crypto_handshake_message.h"
 #include "net/third_party/quiche/src/quic/core/quic_framer.h"
 #include "net/third_party/quiche/src/quic/core/quic_packets.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   quic::QuicFramer framer(quic::AllSupportedVersions(), quic::QuicTime::Zero(),
@@ -16,7 +16,7 @@
   const char* const packet_bytes = reinterpret_cast<const char*>(data);
 
   // Test the CryptoFramer.
-  quiche::QuicheStringPiece crypto_input(packet_bytes, size);
+  absl::string_view crypto_input(packet_bytes, size);
   std::unique_ptr<quic::CryptoHandshakeMessage> handshake_message(
       quic::CryptoFramer::ParseMessage(crypto_input));
 
diff --git a/quic/test_tools/simulator/quic_endpoint.h b/quic/test_tools/simulator/quic_endpoint.h
index ff9b680..39c4855 100644
--- a/quic/test_tools/simulator/quic_endpoint.h
+++ b/quic/test_tools/simulator/quic_endpoint.h
@@ -5,6 +5,7 @@
 #ifndef QUICHE_QUIC_TEST_TOOLS_SIMULATOR_QUIC_ENDPOINT_H_
 #define QUICHE_QUIC_TEST_TOOLS_SIMULATOR_QUIC_ENDPOINT_H_
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/crypto/null_decrypter.h"
 #include "net/third_party/quiche/src/quic/core/crypto/null_encrypter.h"
 #include "net/third_party/quiche/src/quic/core/quic_connection.h"
@@ -17,7 +18,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/simulator/link.h"
 #include "net/third_party/quiche/src/quic/test_tools/simulator/queue.h"
 #include "net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint_base.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 namespace simulator {
@@ -64,7 +64,7 @@
   void OnBlockedFrame(const QuicBlockedFrame& /*frame*/) override {}
   void OnRstStream(const QuicRstStreamFrame& /*frame*/) override {}
   void OnGoAway(const QuicGoAwayFrame& /*frame*/) override {}
-  void OnMessageReceived(quiche::QuicheStringPiece /*message*/) override {}
+  void OnMessageReceived(absl::string_view /*message*/) override {}
   void OnHandshakeDoneReceived() override {}
   void OnConnectionClosed(const QuicConnectionCloseFrame& /*frame*/,
                           ConnectionCloseSource /*source*/) override {}
