OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 #if defined(WEBRTC_WIN) | 22 #if defined(WEBRTC_WIN) |
23 #include "webrtc/base/logging.h" // For LOG_GLE | 23 #include "webrtc/base/logging.h" // For LOG_GLE |
24 #endif | 24 #endif |
25 | 25 |
26 namespace rtc { | 26 namespace rtc { |
27 | 27 |
28 namespace { | 28 namespace { |
29 | 29 |
30 class FakeNetworkMonitor : public NetworkMonitorBase { | 30 class FakeNetworkMonitor : public NetworkMonitorBase { |
31 public: | 31 public: |
32 void Start() override {} | 32 void Start() override { |
33 void Stop() override {} | 33 NetworkMonitorBase::Start(); |
| 34 started_ = true; |
| 35 } |
| 36 void Stop() override { started_ = false; } |
| 37 int BindSocketToNetwork(int socket_fd, const IPAddress& address) override { |
| 38 return OK; |
| 39 } |
| 40 bool started_ = false; |
34 }; | 41 }; |
35 | 42 |
36 class FakeNetworkMonitorFactory : public NetworkMonitorFactory { | 43 class FakeNetworkMonitorFactory : public NetworkMonitorFactory { |
37 public: | 44 public: |
38 FakeNetworkMonitorFactory() {} | 45 FakeNetworkMonitorFactory() {} |
39 NetworkMonitorInterface* CreateNetworkMonitor() { | 46 NetworkMonitorInterface* GetOrCreateNetworkMonitor() override { |
40 return new FakeNetworkMonitor(); | 47 if (!network_monitor_) { |
| 48 network_monitor_.reset(new FakeNetworkMonitor()); |
| 49 } |
| 50 return network_monitor_.get(); |
41 } | 51 } |
| 52 |
| 53 private: |
| 54 scoped_ptr<FakeNetworkMonitor> network_monitor_; |
42 }; | 55 }; |
43 | 56 |
44 } // namespace | 57 } // namespace |
45 | 58 |
46 class NetworkTest : public testing::Test, public sigslot::has_slots<> { | 59 class NetworkTest : public testing::Test, public sigslot::has_slots<> { |
47 public: | 60 public: |
48 NetworkTest() : callback_called_(false) {} | 61 NetworkTest() : callback_called_(false) {} |
49 | 62 |
50 void OnNetworksChanged() { | 63 void OnNetworksChanged() { |
51 callback_called_ = true; | 64 callback_called_ = true; |
(...skipping 13 matching lines...) Expand all Loading... |
65 return network_manager.IsIgnoredNetwork(network); | 78 return network_manager.IsIgnoredNetwork(network); |
66 } | 79 } |
67 | 80 |
68 NetworkManager::NetworkList GetNetworks( | 81 NetworkManager::NetworkList GetNetworks( |
69 const BasicNetworkManager& network_manager, bool include_ignored) { | 82 const BasicNetworkManager& network_manager, bool include_ignored) { |
70 NetworkManager::NetworkList list; | 83 NetworkManager::NetworkList list; |
71 network_manager.CreateNetworks(include_ignored, &list); | 84 network_manager.CreateNetworks(include_ignored, &list); |
72 return list; | 85 return list; |
73 } | 86 } |
74 | 87 |
75 NetworkMonitorInterface* GetNetworkMonitor( | 88 FakeNetworkMonitor* GetNetworkMonitor(BasicNetworkManager& network_manager) { |
76 BasicNetworkManager& network_manager) { | 89 return static_cast<FakeNetworkMonitor*>(network_manager.network_monitor_); |
77 return network_manager.network_monitor_.get(); | |
78 } | 90 } |
79 void ClearNetworks(BasicNetworkManager& network_manager) { | 91 void ClearNetworks(BasicNetworkManager& network_manager) { |
80 for (const auto& kv : network_manager.networks_map_) { | 92 for (const auto& kv : network_manager.networks_map_) { |
81 delete kv.second; | 93 delete kv.second; |
82 } | 94 } |
83 network_manager.networks_.clear(); | 95 network_manager.networks_.clear(); |
84 network_manager.networks_map_.clear(); | 96 network_manager.networks_map_.clear(); |
85 } | 97 } |
86 | 98 |
87 #if defined(WEBRTC_POSIX) | 99 #if defined(WEBRTC_POSIX) |
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip)); | 926 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip)); |
915 } | 927 } |
916 | 928 |
917 TEST_F(NetworkTest, TestNetworkMonitoring) { | 929 TEST_F(NetworkTest, TestNetworkMonitoring) { |
918 BasicNetworkManager manager; | 930 BasicNetworkManager manager; |
919 manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this), | 931 manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this), |
920 &NetworkTest::OnNetworksChanged); | 932 &NetworkTest::OnNetworksChanged); |
921 FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory(); | 933 FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory(); |
922 NetworkMonitorFactory::SetFactory(factory); | 934 NetworkMonitorFactory::SetFactory(factory); |
923 manager.StartUpdating(); | 935 manager.StartUpdating(); |
924 NetworkMonitorInterface* network_monitor = GetNetworkMonitor(manager); | 936 FakeNetworkMonitor* network_monitor = GetNetworkMonitor(manager); |
| 937 EXPECT_TRUE(network_monitor && network_monitor->started_); |
925 EXPECT_TRUE_WAIT(callback_called_, 1000); | 938 EXPECT_TRUE_WAIT(callback_called_, 1000); |
926 callback_called_ = false; | 939 callback_called_ = false; |
927 | 940 |
928 // Clear the networks so that there will be network changes below. | 941 // Clear the networks so that there will be network changes below. |
929 ClearNetworks(manager); | 942 ClearNetworks(manager); |
930 // Network manager is started, so the callback is called when the network | 943 // Network manager is started, so the callback is called when the network |
931 // monitor fires the network-change event. | 944 // monitor fires the network-change event. |
932 network_monitor->OnNetworksChanged(); | 945 network_monitor->OnNetworksChanged(); |
933 EXPECT_TRUE_WAIT(callback_called_, 1000); | 946 EXPECT_TRUE_WAIT(callback_called_, 1000); |
934 | 947 |
935 // Network manager is stopped; the network monitor is removed. | 948 // Network manager is stopped. |
936 manager.StopUpdating(); | 949 manager.StopUpdating(); |
937 EXPECT_TRUE(GetNetworkMonitor(manager) == nullptr); | 950 EXPECT_FALSE(GetNetworkMonitor(manager)->started_); |
938 | 951 |
939 NetworkMonitorFactory::ReleaseFactory(factory); | 952 NetworkMonitorFactory::ReleaseFactory(factory); |
940 } | 953 } |
941 | 954 |
942 TEST_F(NetworkTest, DefaultLocalAddress) { | 955 TEST_F(NetworkTest, DefaultLocalAddress) { |
943 TestBasicNetworkManager manager; | 956 TestBasicNetworkManager manager; |
944 manager.StartUpdating(); | 957 manager.StartUpdating(); |
945 IPAddress ip; | 958 IPAddress ip; |
946 | 959 |
947 // GetDefaultLocalAddress should return false when not set. | 960 // GetDefaultLocalAddress should return false when not set. |
(...skipping 16 matching lines...) Expand all Loading... |
964 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), | 977 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), |
965 GetLoopbackIP(AF_INET6)); | 978 GetLoopbackIP(AF_INET6)); |
966 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip)); | 979 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip)); |
967 EXPECT_EQ(ip, GetLoopbackIP(AF_INET)); | 980 EXPECT_EQ(ip, GetLoopbackIP(AF_INET)); |
968 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); | 981 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); |
969 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6)); | 982 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6)); |
970 manager.StopUpdating(); | 983 manager.StopUpdating(); |
971 } | 984 } |
972 | 985 |
973 } // namespace rtc | 986 } // namespace rtc |
OLD | NEW |