Treat wlan as a WiFi adapter name on all platforms.

wlan was previously classified as WiFi only on Android, while some
non-Android platforms may use the same name for a WiFi adapter. This
causes a WiFi interface to be assigned a higher network cost than
designed when we rely on the name matching to identify the network
type, which has further implication in the ICE candidate pair selection.

Bug: webrtc:10992
Change-Id: I8d2bb18cf9a0e3a06a104f359a85f802526a2ff9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154464
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Alex Drake <alexdrake@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29309}
diff --git a/rtc_base/network.cc b/rtc_base/network.cc
index 4670ab0..369c582 100644
--- a/rtc_base/network.cc
+++ b/rtc_base/network.cc
@@ -211,10 +211,15 @@
     // an ifaddr struct. See ConvertIfAddrs in this file.
     return ADAPTER_TYPE_LOOPBACK;
   }
+
   if (MatchTypeNameWithIndexPattern(network_name, "eth")) {
     return ADAPTER_TYPE_ETHERNET;
   }
 
+  if (MatchTypeNameWithIndexPattern(network_name, "wlan")) {
+    return ADAPTER_TYPE_WIFI;
+  }
+
   if (MatchTypeNameWithIndexPattern(network_name, "ipsec") ||
       MatchTypeNameWithIndexPattern(network_name, "tun") ||
       MatchTypeNameWithIndexPattern(network_name, "utun") ||
@@ -241,9 +246,6 @@
       MatchTypeNameWithIndexPattern(network_name, "clat")) {
     return ADAPTER_TYPE_CELLULAR;
   }
-  if (MatchTypeNameWithIndexPattern(network_name, "wlan")) {
-    return ADAPTER_TYPE_WIFI;
-  }
 #endif
 
   return ADAPTER_TYPE_UNKNOWN;
diff --git a/rtc_base/network_unittest.cc b/rtc_base/network_unittest.cc
index d07feb6..024115a 100644
--- a/rtc_base/network_unittest.cc
+++ b/rtc_base/network_unittest.cc
@@ -859,6 +859,12 @@
   ClearNetworks(manager);
   ReleaseIfAddrs(addr_list);
 
+  strcpy(if_name, "wlan0");
+  addr_list = InstallIpv6Network(if_name, ipv6_address1, ipv6_mask, manager);
+  EXPECT_EQ(ADAPTER_TYPE_WIFI, GetAdapterType(manager));
+  ClearNetworks(manager);
+  ReleaseIfAddrs(addr_list);
+
 #if defined(WEBRTC_IOS)
   strcpy(if_name, "pdp_ip0");
   addr_list = InstallIpv6Network(if_name, ipv6_address1, ipv6_mask, manager);
@@ -879,12 +885,6 @@
   ClearNetworks(manager);
   ReleaseIfAddrs(addr_list);
 
-  strcpy(if_name, "wlan1");
-  addr_list = InstallIpv6Network(if_name, ipv6_address2, ipv6_mask, manager);
-  EXPECT_EQ(ADAPTER_TYPE_WIFI, GetAdapterType(manager));
-  ClearNetworks(manager);
-  ReleaseIfAddrs(addr_list);
-
   strcpy(if_name, "v4-rmnet_data0");
   addr_list = InstallIpv6Network(if_name, ipv6_address2, ipv6_mask, manager);
   EXPECT_EQ(ADAPTER_TYPE_CELLULAR, GetAdapterType(manager));
@@ -896,15 +896,6 @@
   EXPECT_EQ(ADAPTER_TYPE_CELLULAR, GetAdapterType(manager));
   ClearNetworks(manager);
   ReleaseIfAddrs(addr_list);
-#else
-  // TODO(deadbeef): If not iOS or Android, "wlan0" should be treated as
-  // "unknown"? Why? This should be fixed if there's no good reason.
-  strcpy(if_name, "wlan0");
-  addr_list = InstallIpv6Network(if_name, ipv6_address1, ipv6_mask, manager);
-
-  EXPECT_EQ(ADAPTER_TYPE_UNKNOWN, GetAdapterType(manager));
-  ClearNetworks(manager);
-  ReleaseIfAddrs(addr_list);
 #endif
 }
 #endif  // defined(WEBRTC_POSIX)