diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index de56789151..04ed3c94d7 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -9954,7 +9954,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // - The request for the mobile network preferred. // - The request for the default network, for fallback. requests.add(createDefaultInternetRequestForTransport( - TRANSPORT_CELLULAR, NetworkRequest.Type.LISTEN)); + TRANSPORT_CELLULAR, NetworkRequest.Type.REQUEST)); requests.add(createDefaultInternetRequestForTransport( TYPE_NONE, NetworkRequest.Type.TRACK_DEFAULT)); final Set ranges = new ArraySet<>(); diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 9601bb1be3..e494a039d5 100644 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -13385,43 +13385,43 @@ public class ConnectivityServiceTest { } @Test - public void testSetMobileDataPreferredUids_noIssueToFactory() throws Exception { - // First set mobile data preferred uid to create a multi-layer requests: 1. listen for + public void testMultilayerRequestsOfSetMobileDataPreferredUids() throws Exception { + // First set mobile data preferred uid to create a multi-layer requests: 1. request for // cellular, 2. track the default network for fallback. setAndUpdateMobileDataPreferredUids( Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID))); final HandlerThread handlerThread = new HandlerThread("MockFactory"); handlerThread.start(); - NetworkCapabilities internetFilter = new NetworkCapabilities() + final NetworkCapabilities cellFilter = new NetworkCapabilities() + .addTransportType(TRANSPORT_CELLULAR) .addCapability(NET_CAPABILITY_INTERNET) .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED); - final MockNetworkFactory internetFactory = new MockNetworkFactory(handlerThread.getLooper(), - mServiceContext, "internetFactory", internetFilter, mCsHandlerThread); - internetFactory.setScoreFilter(40); + final MockNetworkFactory cellFactory = new MockNetworkFactory(handlerThread.getLooper(), + mServiceContext, "cellFactory", cellFilter, mCsHandlerThread); + cellFactory.setScoreFilter(40); try { - internetFactory.register(); - // Default internet request only. The first request is listen for cellular network, - // which is never sent to factories (it's a LISTEN, not requestable). The second - // fallback request is TRACK_DEFAULT which is also not sent to factories. - internetFactory.expectRequestAdds(1); - internetFactory.assertRequestCountEquals(1); + cellFactory.register(); + // Default internet request and the mobile data preferred request. + cellFactory.expectRequestAdds(2); + cellFactory.assertRequestCountEquals(2); - mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR); - mCellNetworkAgent.connect(true); + mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); + mWiFiNetworkAgent.connect(true); - // The internet factory however is outscored, and should lose its requests. - internetFactory.expectRequestRemove(); - internetFactory.assertRequestCountEquals(0); + // The cellFactory however is outscored, and should lose default internet request. + // But it should still see mobile data preferred request. + cellFactory.expectRequestRemove(); + cellFactory.assertRequestCountEquals(1); - mCellNetworkAgent.disconnect(); + mWiFiNetworkAgent.disconnect(); // The network satisfying the default internet request has disconnected, so the - // internetFactory sees the default request again. - internetFactory.expectRequestAdds(1); - internetFactory.assertRequestCountEquals(1); + // cellFactory sees the default internet requests again. + cellFactory.expectRequestAdd(); + cellFactory.assertRequestCountEquals(2); } finally { - internetFactory.terminate(); + cellFactory.terminate(); handlerThread.quitSafely(); } }