Index: webrtc/base/network_unittest.cc |
diff --git a/webrtc/base/network_unittest.cc b/webrtc/base/network_unittest.cc |
index 5ae7589d1819ff81595b9e93ced52c62b969548d..d172f9261973e939a7c48c8692c4cd96b15e1102 100644 |
--- a/webrtc/base/network_unittest.cc |
+++ b/webrtc/base/network_unittest.cc |
@@ -15,12 +15,9 @@ |
#include <vector> |
#if defined(WEBRTC_POSIX) |
#include <sys/types.h> |
-#if !defined(WEBRTC_ANDROID) |
-#include <ifaddrs.h> |
-#else |
-#include "webrtc/base/ifaddrs-android.h" |
-#endif |
-#endif |
+#include <net/if.h> |
+#include "webrtc/base/ifaddrs_converter.h" |
+#endif // defined(WEBRTC_POSIX) |
#include "webrtc/base/gunit.h" |
#if defined(WEBRTC_WIN) |
#include "webrtc/base/logging.h" // For LOG_GLE |
@@ -28,6 +25,8 @@ |
namespace rtc { |
+namespace { |
+ |
class FakeNetworkMonitor : public NetworkMonitorBase { |
public: |
void Start() override {} |
@@ -42,6 +41,8 @@ class FakeNetworkMonitorFactory : public NetworkMonitorFactory { |
} |
}; |
+} // namespace |
+ |
class NetworkTest : public testing::Test, public sigslot::has_slots<> { |
public: |
NetworkTest() : callback_called_(false) {} |
@@ -89,7 +90,10 @@ class NetworkTest : public testing::Test, public sigslot::has_slots<> { |
struct ifaddrs* interfaces, |
bool include_ignored, |
NetworkManager::NetworkList* networks) { |
- network_manager.ConvertIfAddrs(interfaces, include_ignored, networks); |
+ // Use the base IfAddrsConverter for test cases. |
+ rtc::scoped_ptr<IfAddrsConverter> ifaddrs_converter(new IfAddrsConverter()); |
+ network_manager.ConvertIfAddrs(interfaces, ifaddrs_converter.get(), |
+ include_ignored, networks); |
} |
struct sockaddr_in6* CreateIpv6Addr(const std::string& ip_string, |
@@ -118,6 +122,7 @@ class NetworkTest : public testing::Test, public sigslot::has_slots<> { |
if_addr->ifa_netmask = |
reinterpret_cast<struct sockaddr*>(CreateIpv6Addr(ipv6_netmask, 0)); |
if_addr->ifa_next = list; |
+ if_addr->ifa_flags = IFF_RUNNING; |
return if_addr; |
} |
@@ -762,6 +767,21 @@ TEST_F(NetworkTest, TestConvertIfAddrsMultiAddressesOnOneInterface) { |
MergeNetworkList(manager, result, &changed); |
ReleaseIfAddrs(list); |
} |
+ |
+TEST_F(NetworkTest, TestConvertIfAddrsNotRunning) { |
+ ifaddrs list; |
+ memset(&list, 0, sizeof(list)); |
+ list.ifa_name = const_cast<char*>("test_iface"); |
+ sockaddr ifa_addr; |
+ sockaddr ifa_netmask; |
+ list.ifa_addr = &ifa_addr; |
+ list.ifa_netmask = &ifa_netmask; |
+ |
+ NetworkManager::NetworkList result; |
+ BasicNetworkManager manager; |
+ CallConvertIfAddrs(manager, &list, true, &result); |
+ EXPECT_TRUE(result.empty()); |
+} |
#endif // defined(WEBRTC_POSIX) |
#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) |