diff --git a/p2p/base/port_allocator.cc b/p2p/base/port_allocator.cc
index 099d8b27..fc556a0 100644
--- a/p2p/base/port_allocator.cc
+++ b/p2p/base/port_allocator.cc
@@ -313,16 +313,6 @@
   return list;
 }
 
-PortAllocatorSession* PortAllocator::CreateSessionInternal(
-    const std::string& content_name,
-    int component,
-    const std::string& ice_ufrag,
-    const std::string& ice_pwd) {
-  return CreateSessionInternal(absl::string_view(content_name), component,
-                               absl::string_view(ice_ufrag),
-                               absl::string_view(ice_pwd));
-}
-
 Candidate PortAllocator::SanitizeCandidate(const Candidate& c) const {
   CheckRunOnValidThreadAndInitialized();
   // For a local host candidate, we need to conceal its IP address candidate if
diff --git a/p2p/base/port_allocator.h b/p2p/base/port_allocator.h
index 5072bf9..8d46c0d 100644
--- a/p2p/base/port_allocator.h
+++ b/p2p/base/port_allocator.h
@@ -606,11 +606,6 @@
   // TODO(webrtc::13579): Remove std::string version once downstream users have
   // migrated to the absl::string_view version.
   virtual PortAllocatorSession* CreateSessionInternal(
-      const std::string& content_name,
-      int component,
-      const std::string& ice_ufrag,
-      const std::string& ice_pwd);
-  virtual PortAllocatorSession* CreateSessionInternal(
       absl::string_view content_name,
       int component,
       absl::string_view ice_ufrag,
diff --git a/p2p/base/port_interface.cc b/p2p/base/port_interface.cc
index 997f9f9..b07cdf9 100644
--- a/p2p/base/port_interface.cc
+++ b/p2p/base/port_interface.cc
@@ -20,8 +20,4 @@
 
 PortInterface::~PortInterface() = default;
 
-bool PortInterface::SupportsProtocol(const std::string& protocol) const {
-  return SupportsProtocol(absl::string_view(protocol));
-}
-
 }  // namespace cricket
diff --git a/p2p/base/port_interface.h b/p2p/base/port_interface.h
index 5b5265d..f8df041 100644
--- a/p2p/base/port_interface.h
+++ b/p2p/base/port_interface.h
@@ -61,9 +61,6 @@
 
   virtual bool SharedSocket() const = 0;
 
-  // TODO(webrtc:13579): Remove std::string version once downstream users have
-  // migrated to the absl::string_view version.
-  virtual bool SupportsProtocol(const std::string& protocol) const;
   virtual bool SupportsProtocol(absl::string_view protocol) const = 0;
 
   // PrepareAddress will attempt to get an address for this port that other
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index b69ec4e..a0edd46 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -3547,29 +3547,22 @@
 
 TEST_F(PortTest, TestSupportsProtocol) {
   auto udp_port = CreateUdpPort(kLocalAddr1);
-  EXPECT_TRUE(udp_port->SupportsProtocol(absl::string_view(UDP_PROTOCOL_NAME)));
-  EXPECT_FALSE(
-      udp_port->SupportsProtocol(absl::string_view(TCP_PROTOCOL_NAME)));
+  EXPECT_TRUE(udp_port->SupportsProtocol(UDP_PROTOCOL_NAME));
+  EXPECT_FALSE(udp_port->SupportsProtocol(TCP_PROTOCOL_NAME));
 
   auto stun_port = CreateStunPort(kLocalAddr1, nat_socket_factory1());
-  EXPECT_TRUE(
-      stun_port->SupportsProtocol(absl::string_view(UDP_PROTOCOL_NAME)));
-  EXPECT_FALSE(
-      stun_port->SupportsProtocol(absl::string_view(TCP_PROTOCOL_NAME)));
+  EXPECT_TRUE(stun_port->SupportsProtocol(UDP_PROTOCOL_NAME));
+  EXPECT_FALSE(stun_port->SupportsProtocol(TCP_PROTOCOL_NAME));
 
   auto tcp_port = CreateTcpPort(kLocalAddr1);
-  EXPECT_TRUE(tcp_port->SupportsProtocol(absl::string_view(TCP_PROTOCOL_NAME)));
-  EXPECT_TRUE(
-      tcp_port->SupportsProtocol(absl::string_view(SSLTCP_PROTOCOL_NAME)));
-  EXPECT_FALSE(
-      tcp_port->SupportsProtocol(absl::string_view(UDP_PROTOCOL_NAME)));
+  EXPECT_TRUE(tcp_port->SupportsProtocol(TCP_PROTOCOL_NAME));
+  EXPECT_TRUE(tcp_port->SupportsProtocol(SSLTCP_PROTOCOL_NAME));
+  EXPECT_FALSE(tcp_port->SupportsProtocol(UDP_PROTOCOL_NAME));
 
   auto turn_port =
       CreateTurnPort(kLocalAddr1, nat_socket_factory1(), PROTO_UDP, PROTO_UDP);
-  EXPECT_TRUE(
-      turn_port->SupportsProtocol(absl::string_view(UDP_PROTOCOL_NAME)));
-  EXPECT_FALSE(
-      turn_port->SupportsProtocol(absl::string_view(TCP_PROTOCOL_NAME)));
+  EXPECT_TRUE(turn_port->SupportsProtocol(UDP_PROTOCOL_NAME));
+  EXPECT_FALSE(turn_port->SupportsProtocol(TCP_PROTOCOL_NAME));
 }
 
 // Test that SetIceParameters updates the component, ufrag and password
