diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 01db1c3eb7..d7440bb126 100644 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -3020,6 +3020,43 @@ public class ConnectivityServiceTest { } } + @Test + public void testNetworkDoesntMatchRequestsUntilConnected() throws Exception { + final TestNetworkCallback cb = new TestNetworkCallback(); + final NetworkRequest wifiRequest = new NetworkRequest.Builder() + .addTransportType(TRANSPORT_WIFI).build(); + mCm.requestNetwork(wifiRequest, cb); + mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); + // Updating the score triggers a rematch. + mWiFiNetworkAgent.setScore(new NetworkScore.Builder().build()); + cb.assertNoCallback(); + mWiFiNetworkAgent.connect(false); + cb.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); + cb.assertNoCallback(); + mCm.unregisterNetworkCallback(cb); + } + + @Test + public void testNetworkNotVisibleUntilConnected() throws Exception { + final TestNetworkCallback cb = new TestNetworkCallback(); + final NetworkRequest wifiRequest = new NetworkRequest.Builder() + .addTransportType(TRANSPORT_WIFI).build(); + mCm.registerNetworkCallback(wifiRequest, cb); + mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); + final NetworkCapabilities nc = mWiFiNetworkAgent.getNetworkCapabilities(); + nc.addCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED); + mWiFiNetworkAgent.setNetworkCapabilities(nc, true /* sendToConnectivityService */); + cb.assertNoCallback(); + mWiFiNetworkAgent.connect(false); + cb.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); + final CallbackEntry found = CollectionUtils.findLast(cb.getHistory(), + it -> it instanceof CallbackEntry.CapabilitiesChanged); + assertTrue(((CallbackEntry.CapabilitiesChanged) found).getCaps() + .hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)); + cb.assertNoCallback(); + mCm.unregisterNetworkCallback(cb); + } + @Test public void testStateChangeNetworkCallbacks() throws Exception { final TestNetworkCallback genericNetworkCallback = new TestNetworkCallback();