diff --git a/http2/test_tools/frame_parts.cc b/http2/test_tools/frame_parts.cc
index 7b25299..95ea34d 100644
--- a/http2/test_tools/frame_parts.cc
+++ b/http2/test_tools/frame_parts.cc
@@ -51,14 +51,14 @@
 }
 
 FrameParts::FrameParts(const Http2FrameHeader& header,
-                       quiche::QuicheStringPiece payload)
+                       absl::string_view payload)
     : FrameParts(header) {
   HTTP2_VLOG(1) << "FrameParts with payload.size() = " << payload.size();
   this->payload_.append(payload.data(), payload.size());
   opt_payload_length_ = payload.size();
 }
 FrameParts::FrameParts(const Http2FrameHeader& header,
-                       quiche::QuicheStringPiece payload,
+                       absl::string_view payload,
                        size_t total_pad_length)
     : FrameParts(header, payload) {
   HTTP2_VLOG(1) << "FrameParts with total_pad_length=" << total_pad_length;
@@ -117,8 +117,8 @@
   }
 }
 
-void FrameParts::SetAltSvcExpected(quiche::QuicheStringPiece origin,
-                                   quiche::QuicheStringPiece value) {
+void FrameParts::SetAltSvcExpected(absl::string_view origin,
+                                   absl::string_view value) {
   altsvc_origin_.append(origin.data(), origin.size());
   altsvc_value_.append(value.data(), value.size());
   opt_altsvc_origin_length_ = origin.size();
@@ -140,7 +140,7 @@
   HTTP2_VLOG(1) << "OnDataPayload: len=" << len
                 << "; frame_header_: " << frame_header_;
   ASSERT_TRUE(InFrameOfType(Http2FrameType::DATA)) << *this;
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(data, len), &payload_,
+  ASSERT_TRUE(AppendString(absl::string_view(data, len), &payload_,
                            &opt_payload_length_));
 }
 
@@ -172,7 +172,7 @@
   ASSERT_TRUE(got_start_callback_);
   ASSERT_FALSE(got_end_callback_);
   ASSERT_TRUE(FrameCanHaveHpackPayload(frame_header_)) << *this;
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(data, len), &payload_,
+  ASSERT_TRUE(AppendString(absl::string_view(data, len), &payload_,
                            &opt_payload_length_));
 }
 
@@ -216,8 +216,8 @@
   HTTP2_VLOG(1) << "OnPadding: skipped_length=" << skipped_length;
   ASSERT_TRUE(InPaddedFrame()) << *this;
   ASSERT_TRUE(opt_pad_length_);
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(pad, skipped_length),
-                           &padding_, &opt_pad_length_));
+  ASSERT_TRUE(AppendString(absl::string_view(pad, skipped_length), &padding_,
+                           &opt_pad_length_));
 }
 
 void FrameParts::OnRstStream(const Http2FrameHeader& header,
@@ -313,7 +313,7 @@
 void FrameParts::OnGoAwayOpaqueData(const char* data, size_t len) {
   HTTP2_VLOG(1) << "OnGoAwayOpaqueData: len=" << len;
   ASSERT_TRUE(InFrameOfType(Http2FrameType::GOAWAY)) << *this;
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(data, len), &payload_,
+  ASSERT_TRUE(AppendString(absl::string_view(data, len), &payload_,
                            &opt_payload_length_));
 }
 
@@ -348,14 +348,14 @@
 void FrameParts::OnAltSvcOriginData(const char* data, size_t len) {
   HTTP2_VLOG(1) << "OnAltSvcOriginData: len=" << len;
   ASSERT_TRUE(InFrameOfType(Http2FrameType::ALTSVC)) << *this;
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(data, len),
-                           &altsvc_origin_, &opt_altsvc_origin_length_));
+  ASSERT_TRUE(AppendString(absl::string_view(data, len), &altsvc_origin_,
+                           &opt_altsvc_origin_length_));
 }
 
 void FrameParts::OnAltSvcValueData(const char* data, size_t len) {
   HTTP2_VLOG(1) << "OnAltSvcValueData: len=" << len;
   ASSERT_TRUE(InFrameOfType(Http2FrameType::ALTSVC)) << *this;
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(data, len), &altsvc_value_,
+  ASSERT_TRUE(AppendString(absl::string_view(data, len), &altsvc_value_,
                            &opt_altsvc_value_length_));
 }
 
@@ -378,7 +378,7 @@
   ASSERT_FALSE(IsSupportedHttp2FrameType(frame_header_.type)) << *this;
   ASSERT_TRUE(got_start_callback_);
   ASSERT_FALSE(got_end_callback_);
-  ASSERT_TRUE(AppendString(quiche::QuicheStringPiece(data, len), &payload_,
+  ASSERT_TRUE(AppendString(absl::string_view(data, len), &payload_,
                            &opt_payload_length_));
 }
 
@@ -507,7 +507,7 @@
 }
 
 AssertionResult FrameParts::AppendString(
-    quiche::QuicheStringPiece source,
+    absl::string_view source,
     std::string* target,
     quiche::QuicheOptional<size_t>* opt_length) {
   target->append(source.data(), source.size());
