Merge "Use the NetworkCallback to determine the default network" into sc-dev

This commit is contained in:
Ying Xu
2021-02-26 19:55:13 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 12 deletions

View File

@@ -165,7 +165,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
private int mCurrentUserId;
private OnSubscriptionsChangedListener mSubscriptionListener;
private NetworkCapabilities mLastDefaultNetworkCapabilities;
// Handler that all broadcasts are received on.
private final Handler mReceiverHandler;
// Handler that all callbacks are made on.
@@ -315,6 +315,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
public void onLost(Network network) {
mLastNetwork = null;
mLastNetworkCapabilities = null;
mLastDefaultNetworkCapabilities = null;
String callback = new StringBuilder()
.append(SSDF.format(System.currentTimeMillis())).append(",")
.append("onLost: ")
@@ -341,6 +342,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
}
mLastNetwork = network;
mLastNetworkCapabilities = networkCapabilities;
mLastDefaultNetworkCapabilities = networkCapabilities;
String callback = new StringBuilder()
.append(SSDF.format(System.currentTimeMillis())).append(",")
.append("onCapabilitiesChanged: ")
@@ -959,18 +961,17 @@ public class NetworkControllerImpl extends BroadcastReceiver
private void updateConnectivity() {
mConnectedTransports.clear();
mValidatedTransports.clear();
for (NetworkCapabilities nc :
mConnectivityManager.getDefaultNetworkCapabilitiesForUser(mCurrentUserId)) {
for (int transportType : nc.getTransportTypes()) {
if (mLastDefaultNetworkCapabilities != null) {
for (int transportType : mLastDefaultNetworkCapabilities.getTransportTypes()) {
if (transportType == NetworkCapabilities.TRANSPORT_CELLULAR
&& Utils.tryGetWifiInfoForVcn(nc) != null) {
&& Utils.tryGetWifiInfoForVcn(mLastDefaultNetworkCapabilities) != null) {
mConnectedTransports.set(NetworkCapabilities.TRANSPORT_WIFI);
if (nc.hasCapability(NET_CAPABILITY_VALIDATED)) {
if (mLastDefaultNetworkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED)) {
mValidatedTransports.set(NetworkCapabilities.TRANSPORT_WIFI);
}
} else {
mConnectedTransports.set(transportType);
if (nc.hasCapability(NET_CAPABILITY_VALIDATED)) {
if (mLastDefaultNetworkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED)) {
mValidatedTransports.set(transportType);
}
}

View File

@@ -21,6 +21,7 @@ import static android.telephony.NetworkRegistrationInfo.DOMAIN_PS;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
@@ -173,8 +174,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
mMockSubDefaults = mock(SubscriptionDefaults.class);
mNetCapabilities = new NetworkCapabilities();
when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
when(mMockCm.getDefaultNetworkCapabilitiesForUser(0)).thenReturn(
new NetworkCapabilities[] { mNetCapabilities });
when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm);
doAnswer(invocation -> {
int rssi = invocation.getArgument(0);
@@ -257,8 +256,11 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
ArgumentCaptor.forClass(ConnectivityManager.NetworkCallback.class);
verify(mMockCm, atLeastOnce())
.registerDefaultNetworkCallback(callbackArg.capture(), isA(Handler.class));
mDefaultCallbackInWifiTracker = callbackArg.getAllValues().get(0);
mDefaultCallbackInNetworkController = callbackArg.getAllValues().get(1);
int captureSize = callbackArg.getAllValues().size();
assertTrue(captureSize > 1);
assertEquals(captureSize % 2, 0);
mDefaultCallbackInWifiTracker = callbackArg.getAllValues().get(captureSize - 2);
mDefaultCallbackInNetworkController = callbackArg.getAllValues().get(captureSize - 1);
assertNotNull(mDefaultCallbackInWifiTracker);
assertNotNull(mDefaultCallbackInNetworkController);
verify(mMockCm, atLeastOnce()).registerNetworkCallback(
@@ -307,14 +309,18 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
setLevel(DEFAULT_LEVEL);
updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
TelephonyManager.NETWORK_TYPE_UMTS);
setConnectivityViaCallbackInNetworkController(
NetworkCapabilities.TRANSPORT_CELLULAR, true, true, null);
setConnectivityViaBroadcast(
NetworkCapabilities.TRANSPORT_CELLULAR, true, true);
NetworkCapabilities.TRANSPORT_CELLULAR, true, true);
}
public void setConnectivityViaBroadcastForVcn(
int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) {
mNetCapabilities.setTransportInfo(info);
setConnectivityCommon(networkType, validated, isConnected);
mDefaultCallbackInNetworkController.onCapabilitiesChanged(
mock(Network.class), new NetworkCapabilities(mNetCapabilities));
Intent i = new Intent(ConnectivityManager.INET_CONDITION_ACTION);
mNetworkController.onReceive(mContext, i);
}
@@ -322,6 +328,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
public void setConnectivityViaBroadcast(
int networkType, boolean validated, boolean isConnected) {
setConnectivityCommon(networkType, validated, isConnected);
mDefaultCallbackInNetworkController.onCapabilitiesChanged(
mock(Network.class), new NetworkCapabilities(mNetCapabilities));
Intent i = new Intent(ConnectivityManager.INET_CONDITION_ACTION);
mNetworkController.onReceive(mContext, i);
}