[Provider Model] Show carrier network to internet preference

- If the connected network is the merged carrier Wi-Fi, then show
carrier network to internet prefernce.

Bug: 191091045
Test: manual test
atest -c InternetUpdaterTest

Change-Id: Iad3869f086ea0a4d0607691c6709ee12567831c7
This commit is contained in:
Weng Su
2021-06-22 23:06:45 +08:00
parent 49bf60df47
commit 627efc46a2
2 changed files with 27 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.util.Log; import android.util.Log;
@@ -249,6 +250,9 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
@InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE;
if (mInternetAvailable) { if (mInternetAvailable) {
internetType = sTransportMap.get(mTransport); internetType = sTransportMap.get(mTransport);
if (internetType == INTERNET_WIFI && isCarrierWifiActive()) {
internetType = INTERNET_CELLULAR;
}
} else if (mAirplaneModeEnabler.isAirplaneModeOn() } else if (mAirplaneModeEnabler.isAirplaneModeOn()
&& mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) { && mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
internetType = INTERNET_OFF; internetType = INTERNET_OFF;
@@ -260,6 +264,15 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
} }
} }
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. * Get the internet type.
*/ */

View File

@@ -39,6 +39,7 @@ import android.content.Context;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle;
@@ -194,4 +195,17 @@ public class InternetUpdaterTest {
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET); 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);
}
} }