Merge changes from topic "cherrypicker-L68400000960711014:N74200001369704906" into udc-dev
* changes: Fix agents disconnecting in SUSPENDED state. Check clatd does not stop when suspended network is disconnected
This commit is contained in:
committed by
Android (Google) Code Review
commit
8a32db5fbc
@@ -333,6 +333,24 @@ public class NetworkInfo implements Parcelable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates whether this network is suspended.
|
||||||
|
* @deprecated Apps should instead use the
|
||||||
|
* {@link android.net.ConnectivityManager.NetworkCallback} API to
|
||||||
|
* learn about connectivity changes. See
|
||||||
|
* {@link ConnectivityManager#registerDefaultNetworkCallback} and
|
||||||
|
* {@link ConnectivityManager#registerNetworkCallback}. These will
|
||||||
|
* give a more accurate picture of the connectivity state of
|
||||||
|
* the device and let apps react more easily and quickly to changes.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public boolean isSuspended() {
|
||||||
|
synchronized (this) {
|
||||||
|
return mState == State.SUSPENDED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether network connectivity is possible. A network is unavailable
|
* Indicates whether network connectivity is possible. A network is unavailable
|
||||||
* when a persistent or semi-persistent condition prevents the possibility
|
* when a persistent or semi-persistent condition prevents the possibility
|
||||||
|
|||||||
@@ -4546,7 +4546,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
// because they lost all their requests or because their score isn't good)
|
// because they lost all their requests or because their score isn't good)
|
||||||
// then they would disconnect organically, report their new state and then
|
// then they would disconnect organically, report their new state and then
|
||||||
// disconnect the channel.
|
// disconnect the channel.
|
||||||
if (nai.networkInfo.isConnected()) {
|
if (nai.networkInfo.isConnected() || nai.networkInfo.isSuspended()) {
|
||||||
nai.networkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED,
|
nai.networkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED,
|
||||||
null, null);
|
null, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17987,4 +17987,33 @@ public class ConnectivityServiceTest {
|
|||||||
verify(mDeps).destroyLiveTcpSockets(eq(UidRange.toIntRanges(ranges)),
|
verify(mDeps).destroyLiveTcpSockets(eq(UidRange.toIntRanges(ranges)),
|
||||||
eq(exemptUids));
|
eq(exemptUids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDisconnectSuspendedNetworkStopClatd() throws Exception {
|
||||||
|
final TestNetworkCallback networkCallback = new TestNetworkCallback();
|
||||||
|
final NetworkRequest networkRequest = new NetworkRequest.Builder()
|
||||||
|
.addCapability(NET_CAPABILITY_DUN)
|
||||||
|
.build();
|
||||||
|
mCm.requestNetwork(networkRequest, networkCallback);
|
||||||
|
|
||||||
|
final IpPrefix nat64Prefix = new IpPrefix(InetAddress.getByName("64:ff9b::"), 96);
|
||||||
|
NetworkCapabilities nc = new NetworkCapabilities().addCapability(NET_CAPABILITY_DUN);
|
||||||
|
final LinkProperties lp = new LinkProperties();
|
||||||
|
lp.setInterfaceName(MOBILE_IFNAME);
|
||||||
|
lp.addLinkAddress(new LinkAddress("2001:db8:1::1/64"));
|
||||||
|
lp.setNat64Prefix(nat64Prefix);
|
||||||
|
mCellAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, lp, nc);
|
||||||
|
mCellAgent.connect(true /* validated */, false /* hasInternet */,
|
||||||
|
false /* privateDnsProbeSent */);
|
||||||
|
|
||||||
|
verifyClatdStart(null /* inOrder */, MOBILE_IFNAME, mCellAgent.getNetwork().netId,
|
||||||
|
nat64Prefix.toString());
|
||||||
|
|
||||||
|
mCellAgent.suspend();
|
||||||
|
mCm.unregisterNetworkCallback(networkCallback);
|
||||||
|
mCellAgent.expectDisconnected();
|
||||||
|
waitForIdle();
|
||||||
|
|
||||||
|
verifyClatdStop(null /* inOrder */, MOBILE_IFNAME);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user