Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: webrtc/base/network_unittest.cc

Issue 1391703003: Create network change notifier. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698