Merge "[Provider Model] Show carrier network to internet preference" into sc-dev
diff --git a/src/com/android/settings/network/InternetUpdater.java b/src/com/android/settings/network/InternetUpdater.java
index cb8d32c..3d97e95 100644
--- a/src/com/android/settings/network/InternetUpdater.java
+++ b/src/com/android/settings/network/InternetUpdater.java
@@ -33,6 +33,7 @@
import android.net.ConnectivityManager.NetworkCallback;
import android.net.Network;
import android.net.NetworkCapabilities;
+import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;
@@ -249,6 +250,9 @@
@InternetType int internetType = INTERNET_NETWORKS_AVAILABLE;
if (mInternetAvailable) {
internetType = sTransportMap.get(mTransport);
+ if (internetType == INTERNET_WIFI && isCarrierWifiActive()) {
+ internetType = INTERNET_CELLULAR;
+ }
} else if (mAirplaneModeEnabler.isAirplaneModeOn()
&& mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
internetType = INTERNET_OFF;
@@ -260,6 +264,15 @@
}
}
+ protected boolean isCarrierWifiActive() {
+ final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
+ if (wifiInfo == null || !wifiInfo.isCarrierMerged()) {
+ return false;
+ }
+ Log.i(TAG, "Detect a merged carrier Wi-Fi connected.");
+ return true;
+ }
+
/**
* Get the internet type.
*/
diff --git a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java
index 5ab2ce0..c54c3ee 100644
--- a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java
+++ b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java
@@ -39,6 +39,7 @@
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
+import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import androidx.lifecycle.Lifecycle;
@@ -194,4 +195,17 @@
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET);
}
+
+ @Test
+ public void updateInternetType_carrierWifiConnected_getInternetCellular() {
+ final WifiInfo wifiInfo = mock(WifiInfo.class);
+ doReturn(wifiInfo).when(mWifiManager).getConnectionInfo();
+ doReturn(true).when(wifiInfo).isCarrierMerged();
+ mInternetUpdater.mInternetAvailable = true;
+ mInternetUpdater.mTransport = TRANSPORT_WIFI;
+
+ mInternetUpdater.updateInternetType();
+
+ assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR);
+ }
}