Update socket unittests to not use rtc::Thread::socketserver()

Bug: webrtc:13145
Change-Id: I714e2002697f988c73155e6d8febefc6aff4e34b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231540
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34951}
diff --git a/rtc_base/physical_socket_server_unittest.cc b/rtc_base/physical_socket_server_unittest.cc
index e905375..3da777a 100644
--- a/rtc_base/physical_socket_server_unittest.cc
+++ b/rtc_base/physical_socket_server_unittest.cc
@@ -116,15 +116,16 @@
 
  protected:
   PhysicalSocketTest()
-      : server_(new FakePhysicalSocketServer(this)),
-        thread_(server_.get()),
+      : SocketTest(&server_),
+        server_(this),
+        thread_(&server_),
         fail_accept_(false),
         max_send_size_(-1) {}
 
   void ConnectInternalAcceptError(const IPAddress& loopback);
   void WritableAfterPartialWrite(const IPAddress& loopback);
 
-  std::unique_ptr<FakePhysicalSocketServer> server_;
+  FakePhysicalSocketServer server_;
   rtc::AutoSocketServerThread thread_;
   bool fail_accept_;
   int max_send_size_;
@@ -200,20 +201,20 @@
 
   // Create two clients.
   std::unique_ptr<Socket> client1(
-      server_->CreateSocket(loopback.family(), SOCK_STREAM));
+      server_.CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client1.get());
   EXPECT_EQ(Socket::CS_CLOSED, client1->GetState());
   EXPECT_TRUE(IsUnspecOrEmptyIP(client1->GetLocalAddress().ipaddr()));
 
   std::unique_ptr<Socket> client2(
-      server_->CreateSocket(loopback.family(), SOCK_STREAM));
+      server_.CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client2.get());
   EXPECT_EQ(Socket::CS_CLOSED, client2->GetState());
   EXPECT_TRUE(IsUnspecOrEmptyIP(client2->GetLocalAddress().ipaddr()));
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      server_->CreateSocket(loopback.family(), SOCK_STREAM));
+      server_.CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -477,22 +478,22 @@
        BindFailsIfNetworkBinderFailsForNonLoopbackInterface) {
   MAYBE_SKIP_IPV4;
   FakeNetworkBinder fake_network_binder;
-  server_->set_network_binder(&fake_network_binder);
-  std::unique_ptr<Socket> socket(server_->CreateSocket(AF_INET, SOCK_DGRAM));
+  server_.set_network_binder(&fake_network_binder);
+  std::unique_ptr<Socket> socket(server_.CreateSocket(AF_INET, SOCK_DGRAM));
   fake_network_binder.set_result(NetworkBindingResult::FAILURE);
   EXPECT_EQ(-1, socket->Bind(SocketAddress("192.168.0.1", 0)));
-  server_->set_network_binder(nullptr);
+  server_.set_network_binder(nullptr);
 }
 
 // Network binder shouldn't be used if the socket is bound to the "any" IP.
 TEST_F(PhysicalSocketTest, NetworkBinderIsNotUsedForAnyIp) {
   MAYBE_SKIP_IPV4;
   FakeNetworkBinder fake_network_binder;
-  server_->set_network_binder(&fake_network_binder);
-  std::unique_ptr<Socket> socket(server_->CreateSocket(AF_INET, SOCK_DGRAM));
+  server_.set_network_binder(&fake_network_binder);
+  std::unique_ptr<Socket> socket(server_.CreateSocket(AF_INET, SOCK_DGRAM));
   EXPECT_EQ(0, socket->Bind(SocketAddress("0.0.0.0", 0)));
   EXPECT_EQ(0, fake_network_binder.num_binds());
-  server_->set_network_binder(nullptr);
+  server_.set_network_binder(nullptr);
 }
 
 // For a loopback interface, failures to bind to the interface should be
@@ -501,11 +502,11 @@
        BindSucceedsIfNetworkBinderFailsForLoopbackInterface) {
   MAYBE_SKIP_IPV4;
   FakeNetworkBinder fake_network_binder;
-  server_->set_network_binder(&fake_network_binder);
-  std::unique_ptr<Socket> socket(server_->CreateSocket(AF_INET, SOCK_DGRAM));
+  server_.set_network_binder(&fake_network_binder);
+  std::unique_ptr<Socket> socket(server_.CreateSocket(AF_INET, SOCK_DGRAM));
   fake_network_binder.set_result(NetworkBindingResult::FAILURE);
   EXPECT_EQ(0, socket->Bind(SocketAddress(kIPv4Loopback, 0)));
-  server_->set_network_binder(nullptr);
+  server_.set_network_binder(nullptr);
 }
 
 #endif
diff --git a/rtc_base/socket_unittest.cc b/rtc_base/socket_unittest.cc
index 720dc6c..01a2bed 100644
--- a/rtc_base/socket_unittest.cc
+++ b/rtc_base/socket_unittest.cc
@@ -53,10 +53,6 @@
 // Data size to be used in TcpInternal tests.
 static const size_t kTcpInternalDataSize = 1024 * 1024;  // bytes
 
-void SocketTest::SetUp() {
-  ss_ = Thread::Current()->socketserver();
-}
-
 void SocketTest::TestConnectIPv4() {
   ConnectInternal(kIPv4Loopback);
 }
@@ -242,14 +238,14 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
   EXPECT_EQ(Socket::CS_CLOSED, client->GetState());
   EXPECT_TRUE(IsUnspecOrEmptyIP(client->GetLocalAddress().ipaddr()));
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -297,12 +293,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -345,12 +341,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server, but don't listen yet.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
 
@@ -378,12 +374,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server, but don't listen yet.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
 
@@ -415,13 +411,13 @@
 void SocketTest::ConnectWithClosedSocketInternal(const IPAddress& loopback) {
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
 
   // Create a client and put in to CS_CLOSED state.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   EXPECT_EQ(0, client->Close());
   EXPECT_EQ(Socket::CS_CLOSED, client->GetState());
 
@@ -434,13 +430,13 @@
   // Create server and listen.
   StreamSink sink;
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
   // Create client, connect.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   EXPECT_EQ(0, client->Connect(SocketAddress(server->GetLocalAddress())));
   EXPECT_EQ(Socket::CS_CONNECTING, client->GetState());
   // Try to connect again. Should fail, but not interfere with original attempt.
@@ -477,12 +473,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -506,12 +502,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -544,12 +540,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -618,13 +614,13 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
   client->SignalCloseEvent.connect(&closer, &SocketCloser::OnClose);
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -677,9 +673,9 @@
 // became readable at the same time.
 void SocketTest::DeleteInReadCallbackInternal(const IPAddress& loopback) {
   std::unique_ptr<Socket> socket1(
-      ss_->CreateSocket(loopback.family(), SOCK_DGRAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_DGRAM));
   std::unique_ptr<Socket> socket2(
-      ss_->CreateSocket(loopback.family(), SOCK_DGRAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_DGRAM));
   EXPECT_EQ(0, socket1->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, socket2->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(3, socket1->SendTo("foo", 3, socket1->GetLocalAddress()));
@@ -705,9 +701,9 @@
 
   // Create & connect server and client sockets.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
@@ -757,12 +753,12 @@
 
   // Create receiving client.
   std::unique_ptr<Socket> receiver(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(receiver.get());
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -883,12 +879,12 @@
 
   // Create client.
   std::unique_ptr<Socket> client(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(client.get());
 
   // Create server and listen.
   std::unique_ptr<Socket> server(
-      ss_->CreateSocket(loopback.family(), SOCK_STREAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_STREAM));
   sink.Monitor(server.get());
   EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0)));
   EXPECT_EQ(0, server->Listen(5));
@@ -949,7 +945,7 @@
 void SocketTest::UdpInternal(const IPAddress& loopback) {
   SocketAddress empty = EmptySocketAddressWithFamily(loopback.family());
   // Test basic bind and connect behavior.
-  Socket* socket = ss_->CreateSocket(loopback.family(), SOCK_DGRAM);
+  Socket* socket = socket_factory_->CreateSocket(loopback.family(), SOCK_DGRAM);
   EXPECT_EQ(Socket::CS_CLOSED, socket->GetState());
   EXPECT_EQ(0, socket->Bind(SocketAddress(loopback, 0)));
   SocketAddress addr1 = socket->GetLocalAddress();
@@ -960,10 +956,10 @@
   delete socket;
 
   // Test send/receive behavior.
-  std::unique_ptr<TestClient> client1(
-      new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, addr1))));
-  std::unique_ptr<TestClient> client2(
-      new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
+  auto client1 = std::make_unique<TestClient>(
+      absl::WrapUnique(AsyncUDPSocket::Create(socket_factory_, addr1)));
+  auto client2 = std::make_unique<TestClient>(
+      absl::WrapUnique(AsyncUDPSocket::Create(socket_factory_, empty)));
 
   SocketAddress addr2;
   EXPECT_EQ(3, client2->SendTo("foo", 3, addr1));
@@ -975,8 +971,8 @@
   EXPECT_EQ(addr3, addr1);
   // TODO: figure out what the intent is here
   for (int i = 0; i < 10; ++i) {
-    client2.reset(
-        new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
+    client2 = std::make_unique<TestClient>(
+        absl::WrapUnique(AsyncUDPSocket::Create(socket_factory_, empty)));
 
     SocketAddress addr4;
     EXPECT_EQ(3, client2->SendTo("foo", 3, addr1));
@@ -1002,8 +998,8 @@
   SocketAddress test_addr(dest, 2345);
 
   // Test send
-  std::unique_ptr<TestClient> client(
-      new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
+  auto client = std::make_unique<TestClient>(
+      absl::WrapUnique(AsyncUDPSocket::Create(socket_factory_, empty)));
   int test_packet_size = 1200;
   std::unique_ptr<char[]> test_packet(new char[test_packet_size]);
   // Init the test packet just to avoid memcheck warning.
@@ -1040,7 +1036,7 @@
 
 void SocketTest::GetSetOptionsInternal(const IPAddress& loopback) {
   std::unique_ptr<Socket> socket(
-      ss_->CreateSocket(loopback.family(), SOCK_DGRAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_DGRAM));
   socket->Bind(SocketAddress(loopback, 0));
 
   // Check SNDBUF/RCVBUF.
@@ -1083,7 +1079,7 @@
 
 void SocketTest::SocketRecvTimestamp(const IPAddress& loopback) {
   std::unique_ptr<Socket> socket(
-      ss_->CreateSocket(loopback.family(), SOCK_DGRAM));
+      socket_factory_->CreateSocket(loopback.family(), SOCK_DGRAM));
   EXPECT_EQ(0, socket->Bind(SocketAddress(loopback, 0)));
   SocketAddress address = socket->GetLocalAddress();
 
diff --git a/rtc_base/socket_unittest.h b/rtc_base/socket_unittest.h
index 91ef39c..772df63 100644
--- a/rtc_base/socket_unittest.h
+++ b/rtc_base/socket_unittest.h
@@ -21,11 +21,10 @@
 // socketserver, and call the SocketTest test methods.
 class SocketTest : public ::testing::Test {
  protected:
-  SocketTest()
+  explicit SocketTest(rtc::SocketFactory* socket_factory)
       : kIPv4Loopback(INADDR_LOOPBACK),
         kIPv6Loopback(in6addr_loopback),
-        ss_(nullptr) {}
-  void SetUp() override;
+        socket_factory_(socket_factory) {}
   void TestConnectIPv4();
   void TestConnectIPv6();
   void TestConnectWithDnsLookupIPv4();
@@ -93,7 +92,7 @@
   void GetSetOptionsInternal(const IPAddress& loopback);
   void SocketRecvTimestamp(const IPAddress& loopback);
 
-  SocketServer* ss_;
+  SocketFactory* socket_factory_;
 };
 
 // For unbound sockets, GetLocalAddress / GetRemoteAddress return AF_UNSPEC
diff --git a/rtc_base/win32_socket_server_unittest.cc b/rtc_base/win32_socket_server_unittest.cc
index e545460..f75f513 100644
--- a/rtc_base/win32_socket_server_unittest.cc
+++ b/rtc_base/win32_socket_server_unittest.cc
@@ -38,7 +38,7 @@
 // Test that Win32Socket passes all the generic Socket tests.
 class Win32SocketTest : public SocketTest {
  protected:
-  Win32SocketTest() : thread_(&server_) {}
+  Win32SocketTest() : SocketTest(&server_), thread_(&server_) {}
   Win32SocketServer server_;
   rtc::AutoSocketServerThread thread_;
 };