Publish FOREGROUND and add NOT_SUSPENDED capabilities.
NOT_SUSPENDED and FOREGROUND are capabilities that need to be public so as to reach feature parity with what information can be gotten through the use of CONNECTIVITY_ACTION and synchronous calls to ConnectivityManager. This change makes them public, and wires up the NOT_SUSPENDED capability. This deprecates in effect the old onSuspended and onResumed callbacks, but these have never been public. This also converts the onAvailable path from a multiple binder call design to a simpler, single binder call. This is only for internal convenience Test: runtest frameworks-net Test: cts Test: also manual testing Change-Id: I6ea524bb361ecef0569ea2f9006c1e516378bc25
This commit is contained in:
@@ -38,6 +38,7 @@ import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.anyBoolean;
|
||||
import static org.mockito.Mockito.anyInt;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
@@ -217,7 +218,8 @@ public class ConnectivityManagerTest {
|
||||
|
||||
// callback triggers
|
||||
captor.getValue().send(makeMessage(request, ConnectivityManager.CALLBACK_AVAILABLE));
|
||||
verify(callback, timeout(500).times(1)).onAvailable(any());
|
||||
verify(callback, timeout(500).times(1)).onAvailable(any(Network.class),
|
||||
any(NetworkCapabilities.class), any(LinkProperties.class));
|
||||
|
||||
// unregister callback
|
||||
manager.unregisterNetworkCallback(callback);
|
||||
@@ -244,7 +246,8 @@ public class ConnectivityManagerTest {
|
||||
|
||||
// callback triggers
|
||||
captor.getValue().send(makeMessage(req1, ConnectivityManager.CALLBACK_AVAILABLE));
|
||||
verify(callback, timeout(100).times(1)).onAvailable(any());
|
||||
verify(callback, timeout(100).times(1)).onAvailable(any(Network.class),
|
||||
any(NetworkCapabilities.class), any(LinkProperties.class));
|
||||
|
||||
// unregister callback
|
||||
manager.unregisterNetworkCallback(callback);
|
||||
@@ -335,6 +338,10 @@ public class ConnectivityManagerTest {
|
||||
static Message makeMessage(NetworkRequest req, int messageType) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(NetworkRequest.class.getSimpleName(), req);
|
||||
// Pass default objects as we don't care which get passed here
|
||||
bundle.putParcelable(Network.class.getSimpleName(), new Network(1));
|
||||
bundle.putParcelable(NetworkCapabilities.class.getSimpleName(), new NetworkCapabilities());
|
||||
bundle.putParcelable(LinkProperties.class.getSimpleName(), new LinkProperties());
|
||||
Message msg = Message.obtain();
|
||||
msg.what = messageType;
|
||||
msg.setData(bundle);
|
||||
|
||||
@@ -35,6 +35,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_RCS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_SUPL;
|
||||
@@ -528,6 +529,11 @@ public class ConnectivityServiceTest {
|
||||
mNetworkAgent.sendNetworkInfo(mNetworkInfo);
|
||||
}
|
||||
|
||||
public void resume() {
|
||||
mNetworkInfo.setDetailedState(DetailedState.CONNECTED, null, null);
|
||||
mNetworkAgent.sendNetworkInfo(mNetworkInfo);
|
||||
}
|
||||
|
||||
public void disconnect() {
|
||||
mNetworkInfo.setDetailedState(DetailedState.DISCONNECTED, null, null);
|
||||
mNetworkAgent.sendNetworkInfo(mNetworkInfo);
|
||||
@@ -569,6 +575,10 @@ public class ConnectivityServiceTest {
|
||||
assertTrue(mNetworkStatusReceived.block(TIMEOUT_MS));
|
||||
return mRedirectUrl;
|
||||
}
|
||||
|
||||
public NetworkCapabilities getNetworkCapabilities() {
|
||||
return mNetworkCapabilities;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1273,6 +1283,7 @@ public class ConnectivityServiceTest {
|
||||
NETWORK_CAPABILITIES,
|
||||
LINK_PROPERTIES,
|
||||
SUSPENDED,
|
||||
RESUMED,
|
||||
LOSING,
|
||||
LOST,
|
||||
UNAVAILABLE
|
||||
@@ -1343,6 +1354,11 @@ public class ConnectivityServiceTest {
|
||||
setLastCallback(CallbackState.SUSPENDED, network, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNetworkResumed(Network network) {
|
||||
setLastCallback(CallbackState.RESUMED, network, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLosing(Network network, int maxMsToLive) {
|
||||
setLastCallback(CallbackState.LOSING, network, maxMsToLive /* autoboxed int */);
|
||||
@@ -2459,16 +2475,31 @@ public class ConnectivityServiceTest {
|
||||
|
||||
// Suspend the network.
|
||||
mCellNetworkAgent.suspend();
|
||||
cellNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_NOT_SUSPENDED,
|
||||
mCellNetworkAgent);
|
||||
cellNetworkCallback.expectCallback(CallbackState.SUSPENDED, mCellNetworkAgent);
|
||||
cellNetworkCallback.assertNoCallback();
|
||||
|
||||
// Register a garden variety default network request.
|
||||
final TestNetworkCallback dfltNetworkCallback = new TestNetworkCallback();
|
||||
TestNetworkCallback dfltNetworkCallback = new TestNetworkCallback();
|
||||
mCm.registerDefaultNetworkCallback(dfltNetworkCallback);
|
||||
// We should get onAvailable(), onCapabilitiesChanged(), onLinkPropertiesChanged(),
|
||||
// as well as onNetworkSuspended() in rapid succession.
|
||||
dfltNetworkCallback.expectAvailableAndSuspendedCallbacks(mCellNetworkAgent, true);
|
||||
dfltNetworkCallback.assertNoCallback();
|
||||
mCm.unregisterNetworkCallback(dfltNetworkCallback);
|
||||
|
||||
mCellNetworkAgent.resume();
|
||||
cellNetworkCallback.expectCapabilitiesWith(NET_CAPABILITY_NOT_SUSPENDED,
|
||||
mCellNetworkAgent);
|
||||
cellNetworkCallback.expectCallback(CallbackState.RESUMED, mCellNetworkAgent);
|
||||
cellNetworkCallback.assertNoCallback();
|
||||
|
||||
dfltNetworkCallback = new TestNetworkCallback();
|
||||
mCm.registerDefaultNetworkCallback(dfltNetworkCallback);
|
||||
// This time onNetworkSuspended should not be called.
|
||||
dfltNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
|
||||
dfltNetworkCallback.assertNoCallback();
|
||||
|
||||
mCm.unregisterNetworkCallback(dfltNetworkCallback);
|
||||
mCm.unregisterNetworkCallback(cellNetworkCallback);
|
||||
|
||||
Reference in New Issue
Block a user