Pass a SocketFactory to BasicNetworkManager constructor
Used by QueryDefaultLocalAddress, instead of relying on the update
thread's associated socket server.
This is not the only use of rtc::Thread::socketserver() in the
BasicNetworkManager class. It also interacts with the thread's
socket server to call set_network_binder. That is unchanged by this cl,
perhaps those calls can be moved to the caller of StartNetworkMonitor and
StopNetworkMonitor.
Bug: webrtc:13145
Change-Id: If109c2dcb0e74b183e10bb3db7a5aefcc95d1a8c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232613
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35118}
diff --git a/rtc_base/network_unittest.cc b/rtc_base/network_unittest.cc
index b4f1f31..4d94e7c 100644
--- a/rtc_base/network_unittest.cc
+++ b/rtc_base/network_unittest.cc
@@ -22,6 +22,7 @@
#include "rtc_base/net_helpers.h"
#include "rtc_base/network_monitor.h"
#include "rtc_base/network_monitor_factory.h"
+#include "rtc_base/physical_socket_server.h"
#if defined(WEBRTC_POSIX)
#include <net/if.h>
#include <sys/types.h>
@@ -313,8 +314,9 @@
class TestBasicNetworkManager : public BasicNetworkManager {
public:
- TestBasicNetworkManager(NetworkMonitorFactory* network_monitor_factory)
- : BasicNetworkManager(network_monitor_factory) {}
+ TestBasicNetworkManager(NetworkMonitorFactory* network_monitor_factory,
+ SocketFactory* socket_factory)
+ : BasicNetworkManager(network_monitor_factory, socket_factory) {}
using BasicNetworkManager::QueryDefaultLocalAddress;
using BasicNetworkManager::set_default_local_addresses;
};
@@ -398,7 +400,8 @@
// Test StartUpdating() and StopUpdating(). network_permission_state starts with
// ALLOWED.
TEST_F(NetworkTest, TestUpdateNetworks) {
- BasicNetworkManager manager;
+ PhysicalSocketServer socket_server;
+ BasicNetworkManager manager(nullptr, &socket_server);
manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
&NetworkTest::OnNetworksChanged);
EXPECT_EQ(NetworkManager::ENUMERATION_ALLOWED,
@@ -875,7 +878,8 @@
char if_name[20] = "wifi0";
std::string ipv6_address = "1000:2000:3000:4000:0:0:0:1";
std::string ipv6_mask = "FFFF:FFFF:FFFF:FFFF::";
- BasicNetworkManager manager_without_monitor;
+ PhysicalSocketServer socket_server;
+ BasicNetworkManager manager_without_monitor(nullptr, &socket_server);
manager_without_monitor.StartUpdating();
// A network created without a network monitor will get UNKNOWN type.
ifaddrs* addr_list = InstallIpv6Network(if_name, ipv6_address, ipv6_mask,
@@ -885,7 +889,7 @@
// With the fake network monitor the type should be correctly determined.
FakeNetworkMonitorFactory factory;
- BasicNetworkManager manager_with_monitor(&factory);
+ BasicNetworkManager manager_with_monitor(&factory, &socket_server);
manager_with_monitor.StartUpdating();
// Add the same ipv6 address as before but it has the right network type
// detected by the network monitor now.
@@ -981,7 +985,8 @@
// Sanity check that both interfaces are included by default.
FakeNetworkMonitorFactory factory;
- BasicNetworkManager manager(&factory);
+ PhysicalSocketServer socket_server;
+ BasicNetworkManager manager(&factory, &socket_server);
manager.StartUpdating();
CallConvertIfAddrs(manager, list, /*include_ignored=*/false, &result);
EXPECT_EQ(2u, result.size());
@@ -1125,7 +1130,8 @@
TEST_F(NetworkTest, TestNetworkMonitoring) {
FakeNetworkMonitorFactory factory;
- BasicNetworkManager manager(&factory);
+ PhysicalSocketServer socket_server;
+ BasicNetworkManager manager(&factory, &socket_server);
manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
&NetworkTest::OnNetworksChanged);
manager.StartUpdating();
@@ -1155,7 +1161,8 @@
TEST_F(NetworkTest, MAYBE_DefaultLocalAddress) {
IPAddress ip;
FakeNetworkMonitorFactory factory;
- TestBasicNetworkManager manager(&factory);
+ PhysicalSocketServer socket_server;
+ TestBasicNetworkManager manager(&factory, &socket_server);
manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
&NetworkTest::OnNetworksChanged);
manager.StartUpdating();
@@ -1327,7 +1334,8 @@
// Sanity check that both interfaces are included by default.
FakeNetworkMonitorFactory factory;
- BasicNetworkManager manager(&factory);
+ PhysicalSocketServer socket_server;
+ BasicNetworkManager manager(&factory, &socket_server);
manager.StartUpdating();
CallConvertIfAddrs(manager, list, /*include_ignored=*/false, &result);
EXPECT_EQ(2u, result.size());