Add field trial for surfacing cellular types in AndroidNetworkMonitor
This field trial will be used to rollout the cellular types added
in https://webrtc-review.googlesource.com/c/src/+/174500 in
a controlled fashion.
Bug: webrtc:11473
Change-Id: I371d13d6935f6e0273a023657ce1b11b32bef346
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174831
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31224}
diff --git a/sdk/android/src/jni/android_network_monitor.cc b/sdk/android/src/jni/android_network_monitor.cc
index 0f02d17..69e8956 100644
--- a/sdk/android/src/jni/android_network_monitor.cc
+++ b/sdk/android/src/jni/android_network_monitor.cc
@@ -76,7 +76,9 @@
return NetworkType::NETWORK_UNKNOWN;
}
-static rtc::AdapterType AdapterTypeFromNetworkType(NetworkType network_type) {
+static rtc::AdapterType AdapterTypeFromNetworkType(
+ NetworkType network_type,
+ bool surface_cellular_types) {
switch (network_type) {
case NETWORK_UNKNOWN:
return rtc::ADAPTER_TYPE_UNKNOWN;
@@ -85,9 +87,17 @@
case NETWORK_WIFI:
return rtc::ADAPTER_TYPE_WIFI;
case NETWORK_5G:
+ return surface_cellular_types ? rtc::ADAPTER_TYPE_CELLULAR_5G
+ : rtc::ADAPTER_TYPE_CELLULAR;
case NETWORK_4G:
+ return surface_cellular_types ? rtc::ADAPTER_TYPE_CELLULAR_4G
+ : rtc::ADAPTER_TYPE_CELLULAR;
case NETWORK_3G:
+ return surface_cellular_types ? rtc::ADAPTER_TYPE_CELLULAR_3G
+ : rtc::ADAPTER_TYPE_CELLULAR;
case NETWORK_2G:
+ return surface_cellular_types ? rtc::ADAPTER_TYPE_CELLULAR_2G
+ : rtc::ADAPTER_TYPE_CELLULAR;
case NETWORK_UNKNOWN_CELLULAR:
return rtc::ADAPTER_TYPE_CELLULAR;
case NETWORK_VPN:
@@ -196,6 +206,8 @@
return;
}
started_ = true;
+ surface_cellular_types_ =
+ webrtc::field_trial::IsEnabled("WebRTC-SurfaceCellularTypes");
find_network_handle_without_ipv6_temporary_part_ =
webrtc::field_trial::IsEnabled(
"WebRTC-FindNetworkHandleWithoutIpv6TemporaryPart");
@@ -347,10 +359,11 @@
const NetworkInformation& network_info) {
RTC_LOG(LS_INFO) << "Network connected: " << network_info.ToString();
adapter_type_by_name_[network_info.interface_name] =
- AdapterTypeFromNetworkType(network_info.type);
+ AdapterTypeFromNetworkType(network_info.type, surface_cellular_types_);
if (network_info.type == NETWORK_VPN) {
vpn_underlying_adapter_type_by_name_[network_info.interface_name] =
- AdapterTypeFromNetworkType(network_info.underlying_type_for_vpn);
+ AdapterTypeFromNetworkType(network_info.underlying_type_for_vpn,
+ surface_cellular_types_);
}
network_info_by_handle_[network_info.handle] = network_info;
for (const rtc::IPAddress& address : network_info.ip_addresses) {
diff --git a/sdk/android/src/jni/android_network_monitor.h b/sdk/android/src/jni/android_network_monitor.h
index ee84588..1d795df 100644
--- a/sdk/android/src/jni/android_network_monitor.h
+++ b/sdk/android/src/jni/android_network_monitor.h
@@ -114,6 +114,7 @@
std::map<rtc::IPAddress, NetworkHandle> network_handle_by_address_;
std::map<NetworkHandle, NetworkInformation> network_info_by_handle_;
bool find_network_handle_without_ipv6_temporary_part_;
+ bool surface_cellular_types_;
};
class AndroidNetworkMonitorFactory : public rtc::NetworkMonitorFactory {