Update state in NetworkInfo when network resumes
State override is only handled when state is changed from CONNECTED to SUSPENDED but not reverse path. Handle both ways for SUSPENDED state. Bug: 148678431 Test: FrameworkNetTests Change-Id: I9333f865d61bbf008fdb8ca162ad17dfdffd1d67
This commit is contained in:
@@ -6952,6 +6952,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;
|
||||||
|
|||||||
@@ -3171,6 +3171,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();
|
||||||
@@ -3186,6 +3187,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);
|
||||||
|
|||||||
Reference in New Issue
Block a user