Index: webrtc/base/network_unittest.cc |
diff --git a/webrtc/base/network_unittest.cc b/webrtc/base/network_unittest.cc |
index 6d920e0a507a0fa25cea656025e81376fa2459cb..f2966dca19bea8375b2670e47580dd92b85ed667 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/networkchangenotifier.h" |
#include <vector> |
#if defined(WEBRTC_POSIX) |
#include <sys/types.h> |
@@ -790,4 +791,32 @@ TEST_F(NetworkTest, TestIPv6Selection) { |
EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip)); |
} |
+TEST_F(NetworkTest, TestNetworkChangeNotified) { |
+ BasicNetworkManager manager; |
+ manager.SignalNetworksChanged.connect( |
+ static_cast<NetworkTest*>(this), &NetworkTest::OnNetworksChanged); |
+ scoped_ptr<NetworkChangeNotifierFactory> factory( |
+ NetworkChangeNotifierFactory::CreateFactory()); |
+ NetworkChangeNotifier::SetFactory(factory.get()); |
+ NetworkChangeNotifierDelegate* delegate = factory->CreateDelegate(); |
+ manager.StartUpdating(); |
+ Thread::Current()->ProcessMessages(0); |
+ EXPECT_TRUE(callback_called_); |
+ callback_called_ = false; |
+ |
+ // Network manager is started, so the callback is called when the delegate |
+ // fires the network-change event. |
+ delegate->OnNetworkChangeNotified(); |
+ Thread::Current()->ProcessMessages(0); |
+ EXPECT_TRUE(callback_called_); |
+ callback_called_ = false; |
+ |
+ // Network manager is stopped, so the callback is not called when the delegate |
+ // fires the network-change event. |
+ manager.StopUpdating(); |
+ delegate->OnNetworkChangeNotified(); |
+ Thread::Current()->ProcessMessages(1000); |
+ EXPECT_FALSE(callback_called_); |
+} |
+ |
} // namespace rtc |