From 6402e58bc3cdbf4ffc372a6b3c24ffc642d91a96 Mon Sep 17 00:00:00 2001 From: James Mattis Date: Tue, 20 Apr 2021 17:26:30 -0700 Subject: [PATCH 1/2] Changing per-app default request to TRACK_DEFAULT Changing the per-app default request flows to fallback to a request of type TRACK_DEFAULT as opposed to type REQUEST. The main benefit of this change is that these requests will no longer be sent to the factories which is desired. Bug: 180452284 Bug: 176494815 Test: atest FrameworksNetTests atest FrameworksNetIntegrationTests atest CtsNetTestCasesLatestSdk Change-Id: I312e55a54f70aa82953a32ab9369d5afc02b75e5 --- .../core/java/com/android/server/ConnectivityService.java | 6 ++++-- .../java/com/android/server/ConnectivityServiceTest.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 667a99d508..d3bc490fef 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -9694,7 +9694,8 @@ public class ConnectivityService extends IConnectivityManager.Stub // request. final ArrayList nrs = new ArrayList<>(); nrs.add(createNetworkRequest(NetworkRequest.Type.REQUEST, pref.capabilities)); - nrs.add(createDefaultRequest()); + nrs.add(createDefaultInternetRequestForTransport( + TYPE_NONE, NetworkRequest.Type.TRACK_DEFAULT)); setNetworkRequestUids(nrs, UidRange.fromIntRanges(pref.capabilities.getUids())); final NetworkRequestInfo nri = new NetworkRequestInfo(Process.myUid(), nrs); result.add(nri); @@ -9999,7 +10000,8 @@ public class ConnectivityService extends IConnectivityManager.Stub case OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PAID: requests.add(createUnmeteredNetworkRequest()); requests.add(createOemPaidNetworkRequest()); - requests.add(createDefaultRequest()); + requests.add(createDefaultInternetRequestForTransport( + TYPE_NONE, NetworkRequest.Type.TRACK_DEFAULT)); break; case OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK: requests.add(createUnmeteredNetworkRequest()); diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 16620823dc..1aa2ed28a3 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -10479,7 +10479,7 @@ public class ConnectivityServiceTest { assertTrue(mRequests.get(0).hasCapability(NET_CAPABILITY_VALIDATED)); assertTrue(mRequests.get(1).isRequest()); assertTrue(mRequests.get(1).hasCapability(NET_CAPABILITY_OEM_PAID)); - assertTrue(mRequests.get(2).isRequest()); + assertEquals(NetworkRequest.Type.TRACK_DEFAULT, mRequests.get(2).type); assertTrue(mService.getDefaultRequest().networkCapabilities.equalsNetCapabilities( mRequests.get(2).networkCapabilities)); } From 268f2cd45831acbcebd4892f76f6fd8ab29ac268 Mon Sep 17 00:00:00 2001 From: James Mattis Date: Thu, 22 Apr 2021 17:41:47 -0700 Subject: [PATCH 2/2] Updating tests to honor per-app TRACK_DEFAULT Per-app APIs in ConnectivityService will now have their fallback request which tracks the system default be of type TRACK_DEFAULT as opposed to REQUEST. Existing tests which expect this fallback request to be sent to network factories need to be updated to validate this change. Bug: 180452284 Bug: 176494815 Test: atest FrameworksNetTests Change-Id: I5125755b3ed1ec535494e2d7a48c0860710ed056 --- .../com/android/server/ConnectivityServiceTest.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 1aa2ed28a3..a92973f6af 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -11693,10 +11693,12 @@ public class ConnectivityServiceTest { mServiceContext, "internetFactory", internetFilter, mCsHandlerThread); internetFactory.setScoreFilter(40); internetFactory.register(); - // Default internet request & 3rd (fallback) request in OEM_PAID NRI. The unmetered request - // is never sent to factories (it's a LISTEN, not requestable) and the OEM_PAID request - // doesn't match the internetFactory filter. - internetFactory.expectRequestAdds(2); + // Default internet request only. The unmetered request is never sent to factories (it's a + // LISTEN, not requestable). The 3rd (fallback) request in OEM_PAID NRI is TRACK_DEFAULT + // which is also not sent to factories. Finally, the OEM_PAID request doesn't match the + // internetFactory filter. + internetFactory.expectRequestAdds(1); + internetFactory.assertRequestCountEquals(1); NetworkCapabilities oemPaidFilter = new NetworkCapabilities() .addCapability(NET_CAPABILITY_INTERNET) @@ -11719,7 +11721,7 @@ public class ConnectivityServiceTest { expectNoRequestChanged(oemPaidFactory); oemPaidFactory.assertRequestCountEquals(1); // The internet factory however is outscored, and should lose its requests. - internetFactory.expectRequestRemoves(2); + internetFactory.expectRequestRemove(); internetFactory.assertRequestCountEquals(0); final NetworkCapabilities oemPaidNc = new NetworkCapabilities();