Merge "Change to REQUEST from LISTEN for mobile data preferred uids feature" am: 7079b72fa6 am: 9e98dea823

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1751023

Change-Id: I18ab49638b3c51f4217c84dcf18a5b4fc7007181
This commit is contained in:
Paul Hu
2021-07-02 01:44:52 +00:00
committed by Automerger Merge Worker
2 changed files with 23 additions and 23 deletions

View File

@@ -9953,7 +9953,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// - The request for the mobile network preferred. // - The request for the mobile network preferred.
// - The request for the default network, for fallback. // - The request for the default network, for fallback.
requests.add(createDefaultInternetRequestForTransport( requests.add(createDefaultInternetRequestForTransport(
TRANSPORT_CELLULAR, NetworkRequest.Type.LISTEN)); TRANSPORT_CELLULAR, NetworkRequest.Type.REQUEST));
requests.add(createDefaultInternetRequestForTransport( requests.add(createDefaultInternetRequestForTransport(
TYPE_NONE, NetworkRequest.Type.TRACK_DEFAULT)); TYPE_NONE, NetworkRequest.Type.TRACK_DEFAULT));
final Set<UidRange> ranges = new ArraySet<>(); final Set<UidRange> ranges = new ArraySet<>();

View File

@@ -13503,43 +13503,43 @@ public class ConnectivityServiceTest {
} }
@Test @Test
public void testSetMobileDataPreferredUids_noIssueToFactory() throws Exception { public void testMultilayerRequestsOfSetMobileDataPreferredUids() throws Exception {
// First set mobile data preferred uid to create a multi-layer requests: 1. listen for // First set mobile data preferred uid to create a multi-layer requests: 1. request for
// cellular, 2. track the default network for fallback. // cellular, 2. track the default network for fallback.
setAndUpdateMobileDataPreferredUids( setAndUpdateMobileDataPreferredUids(
Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID))); Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID)));
final HandlerThread handlerThread = new HandlerThread("MockFactory"); final HandlerThread handlerThread = new HandlerThread("MockFactory");
handlerThread.start(); handlerThread.start();
NetworkCapabilities internetFilter = new NetworkCapabilities() final NetworkCapabilities cellFilter = new NetworkCapabilities()
.addTransportType(TRANSPORT_CELLULAR)
.addCapability(NET_CAPABILITY_INTERNET) .addCapability(NET_CAPABILITY_INTERNET)
.addCapability(NET_CAPABILITY_NOT_VCN_MANAGED); .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED);
final MockNetworkFactory internetFactory = new MockNetworkFactory(handlerThread.getLooper(), final MockNetworkFactory cellFactory = new MockNetworkFactory(handlerThread.getLooper(),
mServiceContext, "internetFactory", internetFilter, mCsHandlerThread); mServiceContext, "cellFactory", cellFilter, mCsHandlerThread);
internetFactory.setScoreFilter(40); cellFactory.setScoreFilter(40);
try { try {
internetFactory.register(); cellFactory.register();
// Default internet request only. The first request is listen for cellular network, // Default internet request and the mobile data preferred request.
// which is never sent to factories (it's a LISTEN, not requestable). The second cellFactory.expectRequestAdds(2);
// fallback request is TRACK_DEFAULT which is also not sent to factories. cellFactory.assertRequestCountEquals(2);
internetFactory.expectRequestAdds(1);
internetFactory.assertRequestCountEquals(1);
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
mCellNetworkAgent.connect(true); mWiFiNetworkAgent.connect(true);
// The internet factory however is outscored, and should lose its requests. // The cellFactory however is outscored, and should lose default internet request.
internetFactory.expectRequestRemove(); // But it should still see mobile data preferred request.
internetFactory.assertRequestCountEquals(0); cellFactory.expectRequestRemove();
cellFactory.assertRequestCountEquals(1);
mCellNetworkAgent.disconnect(); mWiFiNetworkAgent.disconnect();
// The network satisfying the default internet request has disconnected, so the // The network satisfying the default internet request has disconnected, so the
// internetFactory sees the default request again. // cellFactory sees the default internet requests again.
internetFactory.expectRequestAdds(1); cellFactory.expectRequestAdd();
internetFactory.assertRequestCountEquals(1); cellFactory.assertRequestCountEquals(2);
} finally { } finally {
internetFactory.terminate(); cellFactory.terminate();
handlerThread.quitSafely(); handlerThread.quitSafely();
} }
} }