Merge "Update state in NetworkInfo when network resumes" am: 9e3dd9a78f am: 3a59735669 am: b96514076d

Change-Id: I98e64e6197c5e79e6425f39053981f7bf389a895
This commit is contained in:
Chiachang Wang
2020-02-17 14:18:56 +00:00
2 changed files with 11 additions and 0 deletions

View File

@@ -6898,6 +6898,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
// worry about multiple different substates of CONNECTED. // worry about multiple different substates of CONNECTED.
newInfo.setDetailedState(NetworkInfo.DetailedState.SUSPENDED, info.getReason(), newInfo.setDetailedState(NetworkInfo.DetailedState.SUSPENDED, info.getReason(),
info.getExtraInfo()); info.getExtraInfo());
} else if (!suspended && info.getDetailedState() == NetworkInfo.DetailedState.SUSPENDED) {
// SUSPENDED state is currently only overridden from CONNECTED state. In the case the
// network agent is created, then goes to suspended, then goes out of suspended without
// ever setting connected. Check if network agent is ever connected to update the state.
newInfo.setDetailedState(nai.everConnected
? NetworkInfo.DetailedState.CONNECTED
: NetworkInfo.DetailedState.CONNECTING,
info.getReason(),
info.getExtraInfo());
} }
newInfo.setRoaming(!nai.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)); newInfo.setRoaming(!nai.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING));
return newInfo; return newInfo;

View File

@@ -3154,6 +3154,7 @@ public class ConnectivityServiceTest {
mCellNetworkAgent); mCellNetworkAgent);
cellNetworkCallback.expectCallback(CallbackEntry.SUSPENDED, mCellNetworkAgent); cellNetworkCallback.expectCallback(CallbackEntry.SUSPENDED, mCellNetworkAgent);
cellNetworkCallback.assertNoCallback(); cellNetworkCallback.assertNoCallback();
assertEquals(NetworkInfo.State.SUSPENDED, mCm.getActiveNetworkInfo().getState());
// Register a garden variety default network request. // Register a garden variety default network request.
TestNetworkCallback dfltNetworkCallback = new TestNetworkCallback(); TestNetworkCallback dfltNetworkCallback = new TestNetworkCallback();
@@ -3169,6 +3170,7 @@ public class ConnectivityServiceTest {
mCellNetworkAgent); mCellNetworkAgent);
cellNetworkCallback.expectCallback(CallbackEntry.RESUMED, mCellNetworkAgent); cellNetworkCallback.expectCallback(CallbackEntry.RESUMED, mCellNetworkAgent);
cellNetworkCallback.assertNoCallback(); cellNetworkCallback.assertNoCallback();
assertEquals(NetworkInfo.State.CONNECTED, mCm.getActiveNetworkInfo().getState());
dfltNetworkCallback = new TestNetworkCallback(); dfltNetworkCallback = new TestNetworkCallback();
mCm.registerDefaultNetworkCallback(dfltNetworkCallback); mCm.registerDefaultNetworkCallback(dfltNetworkCallback);