diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 1276cc2e24..86cfa0e466 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -14370,14 +14370,20 @@ public class ConnectivityService extends IConnectivityManager.Stub { ); } - ArraySet createMultiLayerNrisFromSatelliteNetworkFallbackUids( - @NonNull final Set uids) { + ArraySet createNrisForFallbackDefault( + @NonNull final Set uids, NetworkCapabilities cap, int preferenceOrder) { final List requests = new ArrayList<>(); // request: track default(unrestricted internet network) requests.add(createDefaultInternetRequestForTransport( TYPE_NONE, NetworkRequest.Type.TRACK_DEFAULT)); + requests.add(createNetworkRequest(NetworkRequest.Type.REQUEST, cap)); + return createNrisForPreferenceOrder(uids, requests, preferenceOrder); + } + + ArraySet createMultiLayerNrisFromSatelliteNetworkFallbackUids( + @NonNull final Set uids) { // request: Satellite internet, satellite network could be restricted or constrained final NetworkCapabilities cap = new NetworkCapabilities.Builder() .addCapability(NET_CAPABILITY_INTERNET) @@ -14386,9 +14392,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { .removeCapability(NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED) .addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE) .build(); - requests.add(createNetworkRequest(NetworkRequest.Type.REQUEST, cap)); - - return createNrisForPreferenceOrder(uids, requests, PREFERENCE_ORDER_SATELLITE_FALLBACK); + return createNrisForFallbackDefault(uids, cap, + PREFERENCE_ORDER_SATELLITE_FALLBACK); } private void handleMobileDataPreferredUidsChanged() { @@ -14598,14 +14603,17 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } - private void removeDefaultNetworkRequestsForPreference(final int preferenceOrder) { + private void removeDefaultNetworkRequests(Predicate filter) { // Skip the requests which are set by other network preference. Because the uid range rules // should stay in netd. final Set requests = new ArraySet<>(mDefaultNetworkRequests); - requests.removeIf(request -> request.mPreferenceOrder != preferenceOrder); + requests.removeIf(filter.negate()); handleRemoveNetworkRequests(requests); } + private void removeDefaultNetworkRequestsForPreference(final int preferenceOrder) { + removeDefaultNetworkRequests((nri) -> nri.mPreferenceOrder == preferenceOrder); + } private void addPerAppDefaultNetworkRequests(@NonNull final Set nris) { ensureRunningOnConnectivityServiceThread(); mDefaultNetworkRequests.addAll(nris);