| Index: webrtc/base/network_unittest.cc
|
| diff --git a/webrtc/base/network_unittest.cc b/webrtc/base/network_unittest.cc
|
| index 6d920e0a507a0fa25cea656025e81376fa2459cb..05fdfe66f53326c2cd1084c742dc3916b93a4048 100644
|
| --- a/webrtc/base/network_unittest.cc
|
| +++ b/webrtc/base/network_unittest.cc
|
| @@ -10,6 +10,7 @@
|
|
|
| #include "webrtc/base/network.h"
|
|
|
| +#include "webrtc/base/networkmonitor.h"
|
| #include <vector>
|
| #if defined(WEBRTC_POSIX)
|
| #include <sys/types.h>
|
| @@ -26,6 +27,22 @@
|
|
|
| namespace rtc {
|
|
|
| +class FakeNetworkMonitor : public NetworkMonitor {
|
| + public:
|
| + void StartMonitoring() override {}
|
| + void StopMonitoring() override {}
|
| +};
|
| +
|
| +class FakeNetworkMonitorFactory : public NetworkMonitorFactory {
|
| + public:
|
| + NetworkMonitor* CreateNetworkMonitor() { return new FakeNetworkMonitor(); }
|
| + static FakeNetworkMonitorFactory* CreateFactory() {
|
| + FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory();
|
| + NetworkMonitorFactory::SetFactory(factory);
|
| + return factory;
|
| + }
|
| +};
|
| +
|
| class NetworkTest : public testing::Test, public sigslot::has_slots<> {
|
| public:
|
| NetworkTest() : callback_called_(false) {}
|
| @@ -55,6 +72,10 @@ class NetworkTest : public testing::Test, public sigslot::has_slots<> {
|
| return list;
|
| }
|
|
|
| + NetworkMonitor* GetNetworkMonitor(BasicNetworkManager& network_manager) {
|
| + return network_manager.network_monitor_.get();
|
| + }
|
| +
|
| #if defined(WEBRTC_POSIX)
|
| // Separated from CreateNetworks for tests.
|
| static void CallConvertIfAddrs(const BasicNetworkManager& network_manager,
|
| @@ -790,4 +811,28 @@ TEST_F(NetworkTest, TestIPv6Selection) {
|
| EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip));
|
| }
|
|
|
| +TEST_F(NetworkTest, TestNetworkMonitoring) {
|
| + BasicNetworkManager manager;
|
| + manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
|
| + &NetworkTest::OnNetworksChanged);
|
| + FakeNetworkMonitorFactory::CreateFactory();
|
| + manager.StartUpdating();
|
| + NetworkMonitor* network_monitor = GetNetworkMonitor(manager);
|
| + Thread::Current()->ProcessMessages(0);
|
| + EXPECT_TRUE(callback_called_);
|
| + callback_called_ = false;
|
| +
|
| + // Network manager is started, so the callback is called when the network
|
| + // monitor fires the network-change event.
|
| + network_monitor->OnNetworksChanged();
|
| + Thread::Current()->ProcessMessages(0);
|
| + EXPECT_TRUE(callback_called_);
|
| +
|
| + // Network manager is stopped; the network monitor is removed.
|
| + manager.StopUpdating();
|
| + EXPECT_TRUE(GetNetworkMonitor(manager) == nullptr);
|
| +
|
| + NetworkMonitorFactory::SetFactory(nullptr);
|
| +}
|
| +
|
| } // namespace rtc
|
|
|