Replace QuicheStrCat() with absl::StrCat()

PiperOrigin-RevId: 345549274
Change-Id: Ia6a52e347a05418745a074473c40030af23cd44a
diff --git a/common/quiche_data_reader.cc b/common/quiche_data_reader.cc
index bbb4b87..ee09407 100644
--- a/common/quiche_data_reader.cc
+++ b/common/quiche_data_reader.cc
@@ -7,9 +7,9 @@
 #include <cstring>
 
 #include "absl/strings/numbers.h"
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 #include "net/third_party/quiche/src/common/quiche_endian.h"
 
@@ -209,7 +209,7 @@
 }
 
 std::string QuicheDataReader::DebugString() const {
-  return quiche::QuicheStrCat(" { length: ", len_, ", position: ", pos_, " }");
+  return absl::StrCat(" { length: ", len_, ", position: ", pos_, " }");
 }
 
 #undef ENDPOINT  // undef for jumbo builds
diff --git a/common/quiche_data_writer.cc b/common/quiche_data_writer.cc
index 5d80933..3aaabd0 100644
--- a/common/quiche_data_writer.cc
+++ b/common/quiche_data_writer.cc
@@ -7,8 +7,8 @@
 #include <algorithm>
 #include <limits>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/quiche_endian.h"
 
 namespace quiche {
@@ -145,8 +145,7 @@
 }
 
 std::string QuicheDataWriter::DebugString() const {
-  return quiche::QuicheStrCat(" { capacity: ", capacity_, ", length: ", length_,
-                              " }");
+  return absl::StrCat(" { capacity: ", capacity_, ", length: ", length_, " }");
 }
 
 }  // namespace quiche
diff --git a/common/quiche_data_writer_test.cc b/common/quiche_data_writer_test.cc
index 22e8c08..453ddb0 100644
--- a/common/quiche_data_writer_test.cc
+++ b/common/quiche_data_writer_test.cc
@@ -8,8 +8,8 @@
 #include <cstring>
 
 #include "absl/base/macros.h"
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_test.h"
 #include "net/third_party/quiche/src/common/quiche_data_reader.h"
 #include "net/third_party/quiche/src/common/quiche_endian.h"
@@ -31,7 +31,7 @@
 
 // Used by ::testing::PrintToStringParamName().
 std::string PrintToString(const TestParams& p) {
-  return quiche::QuicheStrCat(
+  return absl::StrCat(
       (p.endianness == quiche::NETWORK_BYTE_ORDER ? "Network" : "Host"),
       "ByteOrder");
 }
diff --git a/quic/core/qpack/qpack_encoder.cc b/quic/core/qpack/qpack_encoder.cc
index bf7cdc6..0e8c35c 100644
--- a/quic/core/qpack/qpack_encoder.cc
+++ b/quic/core/qpack/qpack_encoder.cc
@@ -7,6 +7,7 @@
 #include <algorithm>
 #include <utility>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_index_conversions.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_instruction_encoder.h"
@@ -14,7 +15,6 @@
 #include "net/third_party/quiche/src/quic/core/qpack/value_splitting_header_list.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -416,13 +416,12 @@
 
   if (blocking_manager_.known_received_count() >
       header_table_.inserted_entry_count()) {
-    OnErrorDetected(
-        QUIC_QPACK_DECODER_STREAM_IMPOSSIBLE_INSERT_COUNT,
-        quiche::QuicheStrCat("Increment value ", increment,
-                             " raises known received count to ",
-                             blocking_manager_.known_received_count(),
-                             " exceeding inserted entry count ",
-                             header_table_.inserted_entry_count()));
+    OnErrorDetected(QUIC_QPACK_DECODER_STREAM_IMPOSSIBLE_INSERT_COUNT,
+                    absl::StrCat("Increment value ", increment,
+                                 " raises known received count to ",
+                                 blocking_manager_.known_received_count(),
+                                 " exceeding inserted entry count ",
+                                 header_table_.inserted_entry_count()));
   }
 }
 
@@ -430,8 +429,8 @@
   if (!blocking_manager_.OnHeaderAcknowledgement(stream_id)) {
     OnErrorDetected(
         QUIC_QPACK_DECODER_STREAM_INCORRECT_ACKNOWLEDGEMENT,
-        quiche::QuicheStrCat("Header Acknowledgement received for stream ",
-                             stream_id, " with no outstanding header blocks."));
+        absl::StrCat("Header Acknowledgement received for stream ", stream_id,
+                     " with no outstanding header blocks."));
   }
 }
 
diff --git a/quic/core/qpack/qpack_encoder_test.cc b/quic/core/qpack/qpack_encoder_test.cc
index 08c6123..b991dd2 100644
--- a/quic/core/qpack/qpack_encoder_test.cc
+++ b/quic/core/qpack/qpack_encoder_test.cc
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "absl/strings/escaping.h"
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
@@ -15,7 +16,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_encoder_test_utils.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_header_table_peer.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_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 using ::testing::_;
@@ -251,8 +251,8 @@
       "c5"          // insert with name reference, static index 5
       "0362617a");  // value "baz"
   EXPECT_CALL(encoder_stream_sender_delegate_,
-              WriteStreamData(Eq(quiche::QuicheStrCat(
-                  set_dyanamic_table_capacity, insert_entries))));
+              WriteStreamData(Eq(
+                  absl::StrCat(set_dyanamic_table_capacity, insert_entries))));
 
   EXPECT_EQ(absl::HexStringToBytes(
                 "0400"      // prefix
@@ -283,8 +283,8 @@
       "94e7"        // Huffman-encoded name "foo"
       "03626172");  // value "bar"
   EXPECT_CALL(encoder_stream_sender_delegate_,
-              WriteStreamData(Eq(quiche::QuicheStrCat(
-                  set_dyanamic_table_capacity, insert_entry))));
+              WriteStreamData(
+                  Eq(absl::StrCat(set_dyanamic_table_capacity, insert_entry))));
 
   EXPECT_EQ(absl::HexStringToBytes("0200"  // prefix
                                    "80"    // dynamic entry 0
@@ -315,8 +315,8 @@
       "94e7"        // Huffman-encoded name "foo"
       "03626172");  // value "bar"
   EXPECT_CALL(encoder_stream_sender_delegate_,
-              WriteStreamData(Eq(quiche::QuicheStrCat(
-                  set_dyanamic_table_capacity, insert_entry1))));
+              WriteStreamData(Eq(
+                  absl::StrCat(set_dyanamic_table_capacity, insert_entry1))));
 
   EXPECT_EQ(absl::HexStringToBytes("0200"  // prefix
                                    "80"),  // dynamic entry 0
diff --git a/quic/core/qpack/qpack_send_stream_test.cc b/quic/core/qpack/qpack_send_stream_test.cc
index 80c8986..acc0d0f 100644
--- a/quic/core/qpack/qpack_send_stream_test.cc
+++ b/quic/core/qpack/qpack_send_stream_test.cc
@@ -4,6 +4,7 @@
 
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_send_stream.h"
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/crypto/null_encrypter.h"
 #include "net/third_party/quiche/src/quic/core/http/http_constants.h"
@@ -12,7 +13,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace test {
@@ -40,7 +40,7 @@
 
 // Used by ::testing::PrintToStringParamName().
 std::string PrintToString(const TestParams& tp) {
-  return quiche::QuicheStrCat(
+  return absl::StrCat(
       ParsedQuicVersionToString(tp.version), "_",
       (tp.perspective == Perspective::IS_CLIENT ? "client" : "server"));
 }
diff --git a/quic/qbone/platform/ip_range.h b/quic/qbone/platform/ip_range.h
index 0cea943..b6c5a32 100644
--- a/quic/qbone/platform/ip_range.h
+++ b/quic/qbone/platform/ip_range.h
@@ -5,8 +5,8 @@
 #ifndef QUICHE_QUIC_QBONE_PLATFORM_IP_RANGE_H_
 #define QUICHE_QUIC_QBONE_PLATFORM_IP_RANGE_H_
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ip_address.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -29,7 +29,7 @@
   // Returns the string representation of this object.
   std::string ToString() const {
     if (IsInitialized()) {
-      return quiche::QuicheStrCat(prefix_.ToString(), "/", prefix_length_);
+      return absl::StrCat(prefix_.ToString(), "/", prefix_length_);
     }
     return "(uninitialized)";
   }
diff --git a/quic/qbone/platform/netlink.cc b/quic/qbone/platform/netlink.cc
index d19c28b..8f6b5f2 100644
--- a/quic/qbone/platform/netlink.cc
+++ b/quic/qbone/platform/netlink.cc
@@ -8,12 +8,12 @@
 #include <utility>
 
 #include "absl/base/attributes.h"
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/core/crypto/quic_random.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ip_address.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 #include "net/quic/platform/impl/quic_ip_address_impl.h"
 #include "net/third_party/quiche/src/quic/qbone/platform/rtnetlink_message.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -80,7 +80,7 @@
 
   void Run(struct nlmsghdr* netlink_message) override {
     if (netlink_message->nlmsg_type != RTM_NEWLINK) {
-      QUIC_LOG(INFO) << quiche::QuicheStrCat(
+      QUIC_LOG(INFO) << absl::StrCat(
           "Unexpected nlmsg_type: ", netlink_message->nlmsg_type,
           " expected: ", RTM_NEWLINK);
       return;
@@ -91,7 +91,7 @@
 
     // make sure interface_info is what we asked for.
     if (interface_info->ifi_family != AF_UNSPEC) {
-      QUIC_LOG(INFO) << quiche::QuicheStrCat(
+      QUIC_LOG(INFO) << absl::StrCat(
           "Unexpected ifi_family: ", interface_info->ifi_family,
           " expected: ", AF_UNSPEC);
       return;
@@ -221,8 +221,8 @@
     // Make sure this is for an address family we're interested in.
     if (interface_address->ifa_family != AF_INET &&
         interface_address->ifa_family != AF_INET6) {
-      QUIC_VLOG(2) << quiche::QuicheStrCat("uninteresting ifa family: ",
-                                           interface_address->ifa_family);
+      QUIC_VLOG(2) << absl::StrCat("uninteresting ifa family: ",
+                                   interface_address->ifa_family);
       return;
     }
 
@@ -236,8 +236,7 @@
 
     uint8_t unwanted_flags = interface_address->ifa_flags & unwanted_flags_;
     if (unwanted_flags != 0) {
-      QUIC_VLOG(2) << quiche::QuicheStrCat("unwanted ifa flags: ",
-                                           unwanted_flags);
+      QUIC_VLOG(2) << absl::StrCat("unwanted ifa flags: ", unwanted_flags);
       return;
     }
 
@@ -276,8 +275,8 @@
           }
           break;
         default:
-          QUIC_LOG(ERROR) << quiche::QuicheStrCat(
-              "Unknown address family: ", interface_address->ifa_family);
+          QUIC_LOG(ERROR) << absl::StrCat("Unknown address family: ",
+                                          interface_address->ifa_family);
       }
     }
 
@@ -413,7 +412,7 @@
 
   void Run(struct nlmsghdr* netlink_message) override {
     if (netlink_message->nlmsg_type != RTM_NEWROUTE) {
-      QUIC_LOG(WARNING) << quiche::QuicheStrCat(
+      QUIC_LOG(WARNING) << absl::StrCat(
           "Unexpected nlmsg_type: ", netlink_message->nlmsg_type,
           " expected: ", RTM_NEWROUTE);
       return;
@@ -423,8 +422,7 @@
     int payload_length = RTM_PAYLOAD(netlink_message);
 
     if (route->rtm_family != AF_INET && route->rtm_family != AF_INET6) {
-      QUIC_VLOG(2) << quiche::QuicheStrCat("Uninteresting family: ",
-                                           route->rtm_family);
+      QUIC_VLOG(2) << absl::StrCat("Uninteresting family: ", route->rtm_family);
       return;
     }
 
@@ -458,8 +456,8 @@
           break;
         }
         default: {
-          QUIC_VLOG(2) << quiche::QuicheStrCat("Uninteresting attribute: ",
-                                               rta->rta_type);
+          QUIC_VLOG(2) << absl::StrCat("Uninteresting attribute: ",
+                                       rta->rta_type);
         }
       }
     }
@@ -601,7 +599,7 @@
 
   void Run(struct nlmsghdr* netlink_message) override {
     if (netlink_message->nlmsg_type != RTM_NEWRULE) {
-      QUIC_LOG(WARNING) << quiche::QuicheStrCat(
+      QUIC_LOG(WARNING) << absl::StrCat(
           "Unexpected nlmsg_type: ", netlink_message->nlmsg_type,
           " expected: ", RTM_NEWRULE);
       return;
@@ -611,8 +609,7 @@
     int payload_length = RTM_PAYLOAD(netlink_message);
 
     if (rule->rtm_family != AF_INET6) {
-      QUIC_LOG(ERROR) << quiche::QuicheStrCat("Unexpected family: ",
-                                              rule->rtm_family);
+      QUIC_LOG(ERROR) << absl::StrCat("Unexpected family: ", rule->rtm_family);
       return;
     }
 
@@ -636,8 +633,8 @@
           break;
         }
         default: {
-          QUIC_VLOG(2) << quiche::QuicheStrCat("Uninteresting attribute: ",
-                                               rta->rta_type);
+          QUIC_VLOG(2) << absl::StrCat("Uninteresting attribute: ",
+                                       rta->rta_type);
         }
       }
     }
diff --git a/quic/qbone/platform/netlink_test.cc b/quic/qbone/platform/netlink_test.cc
index f8d0f19..d415f91 100644
--- a/quic/qbone/platform/netlink_test.cc
+++ b/quic/qbone/platform/netlink_test.cc
@@ -195,8 +195,8 @@
       family = AF_INET6;
       break;
     default:
-      QUIC_BUG << quiche::QuicheStrCat("unexpected address family: ",
-                                       ip.address_family());
+      QUIC_BUG << absl::StrCat("unexpected address family: ",
+                               ip.address_family());
       family = AF_UNSPEC;
   }
   auto* msg = reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(nlm));
diff --git a/quic/quic_transport/quic_transport_server_session.cc b/quic/quic_transport/quic_transport_server_session.cc
index 083e6fc..e151b31 100644
--- a/quic/quic_transport/quic_transport_server_session.cc
+++ b/quic/quic_transport/quic_transport_server_session.cc
@@ -8,6 +8,7 @@
 #include <memory>
 #include <string>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "url/gurl.h"
 #include "url/url_constants.h"
@@ -16,7 +17,6 @@
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/quic_transport/quic_transport_protocol.h"
 #include "net/third_party/quiche/src/quic/quic_transport/quic_transport_stream.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -88,8 +88,8 @@
   if (buffer_.size() > ClientIndicationMaxSize()) {
     session_->connection()->CloseConnection(
         QUIC_TRANSPORT_INVALID_CLIENT_INDICATION,
-        quiche::QuicheStrCat("Client indication size exceeds ",
-                             ClientIndicationMaxSize(), " bytes"),
+        absl::StrCat("Client indication size exceeds ",
+                     ClientIndicationMaxSize(), " bytes"),
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
     return;
   }
@@ -111,7 +111,7 @@
 
     absl::string_view value;
     if (!reader_.ReadStringPiece16(&value)) {
-      ParseError(quiche::QuicheStrCat("Failed to read value for key ", key));
+      ParseError(absl::StrCat("Failed to read value for key ", key));
       return false;
     }
 
@@ -169,9 +169,9 @@
 
   // TODO(b/145674008): use the SNI value from the handshake instead of the IP
   // address.
-  std::string url_text = quiche::QuicheStrCat(
-      url::kQuicTransportScheme, url::kStandardSchemeSeparator,
-      session_->self_address().ToString(), path);
+  std::string url_text =
+      absl::StrCat(url::kQuicTransportScheme, url::kStandardSchemeSeparator,
+                   session_->self_address().ToString(), path);
   GURL url{url_text};
   if (!url.is_valid()) {
     Error("Invalid path specified");
@@ -194,8 +194,8 @@
 
 void QuicTransportServerSession::ClientIndicationParser::ParseError(
     absl::string_view error_message) {
-  Error(quiche::QuicheStrCat("Failed to parse the client indication stream: ",
-                             error_message, reader_.DebugString()));
+  Error(absl::StrCat("Failed to parse the client indication stream: ",
+                     error_message, reader_.DebugString()));
 }
 
 void QuicTransportServerSession::ProcessClientIndication(
diff --git a/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc b/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc
index 5932b9c..489295e 100644
--- a/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc
+++ b/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc
@@ -7,13 +7,13 @@
 #include <cstdint>
 #include <memory>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "third_party/boringssl/src/include/openssl/sha.h"
 #include "net/third_party/quiche/src/quic/core/crypto/certificate_view.h"
 #include "net/third_party/quiche/src/quic/core/quic_time.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 namespace quic {
@@ -163,9 +163,9 @@
 
   if (!HasValidExpiry(*view)) {
     *details = std::make_unique<Details>(Status::kExpiryTooLong);
-    *error_details = quiche::QuicheStrCat(
-        "Certificate expiry exceeds the configured limit of ",
-        max_validity_days_, " days");
+    *error_details =
+        absl::StrCat("Certificate expiry exceeds the configured limit of ",
+                     max_validity_days_, " days");
     return QUIC_FAILURE;
   }
 
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index b575311..fe6e8f3 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -13,6 +13,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/congestion_control/loss_detection_interface.h"
 #include "net/third_party/quiche/src/quic/core/congestion_control/send_algorithm_interface.h"
@@ -37,7 +38,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/mock_random.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/simple_quic_framer.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -1821,8 +1821,8 @@
 // EXPECT_THAT(stream_->connection_error(), IsError(QUIC_INTERNAL_ERROR));
 MATCHER_P(IsError,
           expected,
-          quiche::QuicheStrCat(negation ? "isn't equal to " : "is equal to ",
-                               QuicErrorCodeToString(expected))) {
+          absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                       QuicErrorCodeToString(expected))) {
   *result_listener << QuicErrorCodeToString(static_cast<QuicErrorCode>(arg));
   return arg == expected;
 }
@@ -1830,8 +1830,8 @@
 // Shorthand for IsError(QUIC_NO_ERROR).
 // Example usage: EXPECT_THAT(stream_->connection_error(), IsQuicNoError());
 MATCHER(IsQuicNoError,
-        quiche::QuicheStrCat(negation ? "isn't equal to " : "is equal to ",
-                             QuicErrorCodeToString(QUIC_NO_ERROR))) {
+        absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                     QuicErrorCodeToString(QUIC_NO_ERROR))) {
   *result_listener << QuicErrorCodeToString(arg);
   return arg == QUIC_NO_ERROR;
 }
@@ -1841,8 +1841,8 @@
 // EXPECT_THAT(stream_->stream_error(), IsStreamError(QUIC_INTERNAL_ERROR));
 MATCHER_P(IsStreamError,
           expected,
-          quiche::QuicheStrCat(negation ? "isn't equal to " : "is equal to ",
-                               QuicRstStreamErrorCodeToString(expected))) {
+          absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                       QuicRstStreamErrorCodeToString(expected))) {
   *result_listener << QuicRstStreamErrorCodeToString(arg);
   return arg == expected;
 }
@@ -1850,9 +1850,8 @@
 // Shorthand for IsStreamError(QUIC_STREAM_NO_ERROR).  Example usage:
 // EXPECT_THAT(stream_->stream_error(), IsQuicStreamNoError());
 MATCHER(IsQuicStreamNoError,
-        quiche::QuicheStrCat(
-            negation ? "isn't equal to " : "is equal to ",
-            QuicRstStreamErrorCodeToString(QUIC_STREAM_NO_ERROR))) {
+        absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                     QuicRstStreamErrorCodeToString(QUIC_STREAM_NO_ERROR))) {
   *result_listener << QuicRstStreamErrorCodeToString(arg);
   return arg == QUIC_STREAM_NO_ERROR;
 }
diff --git a/quic/test_tools/send_algorithm_test_utils.cc b/quic/test_tools/send_algorithm_test_utils.cc
index f5ca6ee..07b371c 100644
--- a/quic/test_tools/send_algorithm_test_utils.cc
+++ b/quic/test_tools/send_algorithm_test_utils.cc
@@ -4,10 +4,10 @@
 
 #include "net/third_party/quiche/src/quic/test_tools/send_algorithm_test_utils.h"
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test_output.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace test {
@@ -49,9 +49,8 @@
       test_info->type_param() ? test_info->type_param() : "";
   const std::string value_param =
       test_info->value_param() ? test_info->value_param() : "";
-  return quiche::QuicheStrCat(test_info->test_suite_name(), ".",
-                              test_info->name(), "_", type_param, "_",
-                              value_param);
+  return absl::StrCat(test_info->test_suite_name(), ".", test_info->name(), "_",
+                      type_param, "_", value_param);
 }
 
 std::string GetSendAlgorithmTestResultFilename() {
diff --git a/quic/test_tools/simulator/quic_endpoint_base.cc b/quic/test_tools/simulator/quic_endpoint_base.cc
index c05740d..729c770 100644
--- a/quic/test_tools/simulator/quic_endpoint_base.cc
+++ b/quic/test_tools/simulator/quic_endpoint_base.cc
@@ -7,6 +7,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/core/crypto/crypto_handshake_message.h"
 #include "net/third_party/quiche/src/quic/core/crypto/crypto_protocol.h"
 #include "net/third_party/quiche/src/quic/core/quic_connection.h"
@@ -73,7 +74,7 @@
     const char* perspective_prefix =
         connection_->perspective() == Perspective::IS_CLIENT ? "C" : "S";
 
-    std::string identifier = quiche::QuicheStrCat(
+    std::string identifier = absl::StrCat(
         perspective_prefix, connection_->connection_id().ToString());
     QuicRecordTrace(identifier, trace_visitor_->trace()->SerializeAsString());
   }
diff --git a/quic/test_tools/simulator/switch.cc b/quic/test_tools/simulator/switch.cc
index dcfc2d8..177be9d 100644
--- a/quic/test_tools/simulator/switch.cc
+++ b/quic/test_tools/simulator/switch.cc
@@ -5,6 +5,7 @@
 #include <cinttypes>
 #include <utility>
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/test_tools/simulator/switch.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
@@ -17,8 +18,8 @@
                QuicByteCount queue_capacity) {
   for (size_t port_number = 1; port_number <= port_count; port_number++) {
     ports_.emplace_back(simulator,
-                        quiche::QuicheStrCat(name, " (port ", port_number, ")"),
-                        this, port_number, queue_capacity);
+                        absl::StrCat(name, " (port ", port_number, ")"), this,
+                        port_number, queue_capacity);
   }
 }