From dc40c8ab95282559def8001f76bfe95212535e92 Mon Sep 17 00:00:00 2001 From: Priyanka Advani Date: Mon, 4 Mar 2024 21:39:38 +0000 Subject: Revert "Satellite Internet Support" Revert submission 26188732-satellite_internet_support Reason for revert: Droid-monitored triggered revert due to b/328107058. Will be verifying through ABTD for confirmation and before submitting the revert. Reverted changes: /q/submissionid:26188732-satellite_internet_support (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:bfd2b1e665f81efe5772339afbbd23339043debb) Merged-In: I7a212d86e8a63e4ae1fea4ce19a878668137e13b Change-Id: I7a212d86e8a63e4ae1fea4ce19a878668137e13b --- .../internal/telephony/data/DataConfigManager.java | 15 -- .../internal/telephony/data/DataEvaluation.java | 4 +- .../internal/telephony/data/DataNetwork.java | 39 +----- .../telephony/data/DataNetworkController.java | 153 ++++++++------------- .../telephony/data/DataProfileManager.java | 2 +- .../internal/telephony/data/DataRetryManager.java | 2 +- .../android/internal/telephony/data/DataUtils.java | 71 ++++------ .../internal/telephony/data/PhoneSwitcher.java | 6 +- .../telephony/data/TelephonyNetworkFactory.java | 5 +- .../telephony/data/TelephonyNetworkRequest.java | 34 +---- 10 files changed, 89 insertions(+), 242 deletions(-) (limited to 'src/java/com/android/internal/telephony') diff --git a/src/java/com/android/internal/telephony/data/DataConfigManager.java b/src/java/com/android/internal/telephony/data/DataConfigManager.java index 6ad89ce15c..0e06dad972 100644 --- a/src/java/com/android/internal/telephony/data/DataConfigManager.java +++ b/src/java/com/android/internal/telephony/data/DataConfigManager.java @@ -1435,18 +1435,6 @@ public class DataConfigManager extends Handler { com.android.internal.R.bool.config_honor_data_retry_timer_for_emergency_network); } - /** - * @return The capabilities that network will be forced to mark as cellular transport. - */ - public @NetCapability Set getForcedCellularTransportCapabilities() { - String[] forcedCellularTransportCapabilities = mResources.getStringArray( - com.android.internal.R.array.config_force_cellular_transport_capabilities); - - return Arrays.stream(forcedCellularTransportCapabilities) - .map(DataUtils::getNetworkCapabilityFromString) - .collect(Collectors.toSet()); - } - /** * Log debug messages. * @param s debug messages @@ -1555,9 +1543,6 @@ public class DataConfigManager extends Handler { pw.println("isTetheringProfileDisabledForRoaming=" + isTetheringProfileDisabledForRoaming()); pw.println("allowClearInitialAttachDataProfile=" + allowClearInitialAttachDataProfile()); - pw.println("forcedCellularTransportCapabilities=" + getForcedCellularTransportCapabilities() - .stream().map(DataUtils::networkCapabilityToString) - .collect(Collectors.joining(","))); pw.decreaseIndent(); } } diff --git a/src/java/com/android/internal/telephony/data/DataEvaluation.java b/src/java/com/android/internal/telephony/data/DataEvaluation.java index a54884f911..3d10e9cd22 100644 --- a/src/java/com/android/internal/telephony/data/DataEvaluation.java +++ b/src/java/com/android/internal/telephony/data/DataEvaluation.java @@ -346,9 +346,7 @@ public class DataEvaluation { /** Handover max retry stopped but network is not on the preferred transport. */ HANDOVER_RETRY_STOPPED(true), /** BootStrap sim data limit reached. */ - DATA_LIMIT_REACHED(true), - /** Data network connectivity transport not allowed. */ - DATA_NETWORK_TRANSPORT_NOT_ALLOWED(true); + DATA_LIMIT_REACHED(true); private final boolean mIsHardReason; diff --git a/src/java/com/android/internal/telephony/data/DataNetwork.java b/src/java/com/android/internal/telephony/data/DataNetwork.java index 02d2075a8c..0dbbc5c024 100644 --- a/src/java/com/android/internal/telephony/data/DataNetwork.java +++ b/src/java/com/android/internal/telephony/data/DataNetwork.java @@ -314,7 +314,6 @@ public class DataNetwork extends StateMachine { TEAR_DOWN_REASON_ONLY_ALLOWED_SINGLE_NETWORK, TEAR_DOWN_REASON_PREFERRED_DATA_SWITCHED, TEAR_DOWN_REASON_DATA_LIMIT_REACHED, - TEAR_DOWN_REASON_DATA_NETWORK_TRANSPORT_NOT_ALLOWED, }) public @interface TearDownReason {} @@ -414,9 +413,6 @@ public class DataNetwork extends StateMachine { /** Data network tear down due to bootstrap sim data limit reached. */ public static final int TEAR_DOWN_REASON_DATA_LIMIT_REACHED = 31; - /** Data network tear down due to current data network transport mismatch. */ - public static final int TEAR_DOWN_REASON_DATA_NETWORK_TRANSPORT_NOT_ALLOWED = 32; - //********************************************************************************************// // WHENEVER ADD A NEW TEAR DOWN REASON, PLEASE UPDATE DataDeactivateReasonEnum in enums.proto // //********************************************************************************************// @@ -702,11 +698,6 @@ public class DataNetwork extends StateMachine { */ private boolean mLastKnownRoamingState; - /** - * The non-terrestrial status - */ - private final boolean mIsSatellite; - /** The reason that why setting up this data network is allowed. */ private @NonNull DataAllowedReason mDataAllowedReason; @@ -997,8 +988,6 @@ public class DataNetwork extends StateMachine { mTransport = transport; mLastKnownDataNetworkType = getDataNetworkType(); mLastKnownRoamingState = mPhone.getServiceState().getDataRoamingFromRegistration(); - mIsSatellite = mPhone.getServiceState().isUsingNonTerrestrialNetwork() - && transport == AccessNetworkConstants.TRANSPORT_TYPE_WWAN; mDataAllowedReason = dataAllowedReason; dataProfile.setLastSetupTimestamp(SystemClock.elapsedRealtime()); mAttachedNetworkRequestList.addAll(networkRequestList); @@ -2224,27 +2213,12 @@ public class DataNetwork extends StateMachine { } } - /** - * @return {@code true} if this is a satellite data network. - */ - public boolean isSatellite() { - return mIsSatellite; - } - /** * Update the network capabilities. */ private void updateNetworkCapabilities() { - final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(); - - if (mFlags.carrierEnabledSatelliteFlag() && mIsSatellite - && mDataConfigManager.getForcedCellularTransportCapabilities().stream() - .noneMatch(this::hasNetworkCapabilityInNetworkRequests)) { - builder.addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE); - } else { - builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); - } - + final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); boolean roaming = mPhone.getServiceState().getDataRoaming(); builder.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder() @@ -2411,11 +2385,6 @@ public class DataNetwork extends StateMachine { builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); } - // mark the network as restricted when service state is non-terrestrial(satellite network) - if (mFlags.carrierEnabledSatelliteFlag() && mIsSatellite) { - builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); - } - // Check if the feature force MMS on IWLAN is enabled. When the feature is enabled, MMS // will be attempted on IWLAN if possible, even if existing cellular networks already // supports IWLAN. @@ -2432,7 +2401,7 @@ public class DataNetwork extends StateMachine { DataProfile dataProfile = mDataNetworkController.getDataProfileManager() .getDataProfileForNetworkRequest(new TelephonyNetworkRequest( new NetworkRequest.Builder().addCapability( - NetworkCapabilities.NET_CAPABILITY_MMS).build(), mPhone, mFlags), + NetworkCapabilities.NET_CAPABILITY_MMS).build(), mPhone), TelephonyManager.NETWORK_TYPE_IWLAN, false, false, false); // If we find another data data profile that can support MMS on IWLAN, then remove // the MMS capability from this cellular network. This will allow IWLAN to be @@ -3821,8 +3790,6 @@ public class DataNetwork extends StateMachine { return "TEAR_DOWN_REASON_PREFERRED_DATA_SWITCHED"; case TEAR_DOWN_REASON_DATA_LIMIT_REACHED: return "TEAR_DOWN_REASON_DATA_LIMIT_REACHED"; - case TEAR_DOWN_REASON_DATA_NETWORK_TRANSPORT_NOT_ALLOWED: - return "TEAR_DOWN_REASON_DATA_NETWORK_TRANSPORT_NOT_ALLOWED"; default: return "UNKNOWN(" + reason + ")"; } diff --git a/src/java/com/android/internal/telephony/data/DataNetworkController.java b/src/java/com/android/internal/telephony/data/DataNetworkController.java index 7eb7c164c7..70d3b23142 100644 --- a/src/java/com/android/internal/telephony/data/DataNetworkController.java +++ b/src/java/com/android/internal/telephony/data/DataNetworkController.java @@ -1455,7 +1455,7 @@ public class DataNetworkController extends Handler { new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) - .build(), mPhone, mFeatureFlags); + .build(), mPhone); // If we don't skip checking existing network, then we should check If one of the // existing networks can satisfy the internet request, then internet is allowed. if ((!mFeatureFlags.ignoreExistingNetworksForInternetAllowedChecking() @@ -1515,7 +1515,7 @@ public class DataNetworkController extends Handler { new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) - .build(), mPhone, mFeatureFlags); + .build(), mPhone); DataEvaluation evaluation = evaluateNetworkRequest(internetRequest, DataEvaluationReason.EXTERNAL_QUERY); return evaluation.getDataDisallowedReasons(); @@ -1535,13 +1535,6 @@ public class DataNetworkController extends Handler { int transport = mAccessNetworksManager.getPreferredTransportByNetworkCapability( networkRequest.getApnTypeNetworkCapability()); - // Check if the request can be satisfied by cellular network or satellite network. - if (mFeatureFlags.carrierEnabledSatelliteFlag() - && !canConnectivityTransportSatisfyNetworkRequest(networkRequest, transport)) { - evaluation.addDataDisallowedReason( - DataDisallowedReason.DATA_NETWORK_TRANSPORT_NOT_ALLOWED); - } - // Bypass all checks for emergency network request. if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)) { DataProfile emergencyProfile = mDataProfileManager.getDataProfileForNetworkRequest( @@ -1556,13 +1549,14 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.DATA_THROTTLED); log("Emergency network request is throttled by the previous setup data " + "call response."); + log(evaluation.toString()); + networkRequest.setEvaluation(evaluation); + return evaluation; } - if (!evaluation.containsDisallowedReasons()) { - evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_REQUEST); - if (emergencyProfile != null) { - evaluation.setCandidateDataProfile(emergencyProfile); - } + evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_REQUEST); + if (emergencyProfile != null) { + evaluation.setCandidateDataProfile(emergencyProfile); } networkRequest.setEvaluation(evaluation); log(evaluation.toString()); @@ -1651,6 +1645,11 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE); } + // Check whether data is disallowed while using satellite + if (isDataDisallowedDueToSatellite(networkRequest.getCapabilities())) { + evaluation.addDataDisallowedReason(DataDisallowedReason.SERVICE_OPTION_NOT_SUPPORTED); + } + // Check if only one data network is allowed. if (isOnlySingleDataNetworkAllowed(transport) && !hasCapabilityExemptsFromSinglePdnRule(networkRequest.getCapabilities())) { @@ -1823,7 +1822,7 @@ public class DataNetworkController extends Handler { networkRequestList.add(networkRequest); } } - return DataUtils.getGroupedNetworkRequestList(networkRequestList, mFeatureFlags); + return DataUtils.getGroupedNetworkRequestList(networkRequestList); } /** @@ -1892,26 +1891,10 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE); } - // If the network is satellite, then the network must be restricted. - if (mFeatureFlags.carrierEnabledSatelliteFlag()) { - // The IWLAN data network should remain intact even when satellite is connected. - if (dataNetwork.getTransport() != AccessNetworkConstants.TRANSPORT_TYPE_WLAN) { - // On satellite, every data network needs to be restricted. - if (mServiceState.isUsingNonTerrestrialNetwork() - && dataNetwork.getNetworkCapabilities() - .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)) { - evaluation.addDataDisallowedReason( - DataDisallowedReason.DATA_NETWORK_TRANSPORT_NOT_ALLOWED); - } - - // Check if the transport is compatible with the network - if (mServiceState.isUsingNonTerrestrialNetwork() != dataNetwork.isSatellite()) { - // Since we don't support satellite/cellular network handover, we should always - // tear down the network when transport changes. - evaluation.addDataDisallowedReason( - DataDisallowedReason.DATA_NETWORK_TRANSPORT_NOT_ALLOWED); - } - } + // Check whether data is disallowed while using satellite + if (isDataDisallowedDueToSatellite(dataNetwork.getNetworkCapabilities() + .getCapabilities())) { + evaluation.addDataDisallowedReason(DataDisallowedReason.SERVICE_OPTION_NOT_SUPPORTED); } // Check whether data limit reached for bootstrap sim, else re-evaluate based on the timer @@ -2098,65 +2081,6 @@ public class DataNetworkController extends Handler { return evaluation; } - /** - * Check if the transport from connectivity service can satisfy the network request. Note the - * transport here is connectivity service's transport (Wifi, cellular, satellite, etc..), not - * the widely used {@link AccessNetworkConstants#TRANSPORT_TYPE_WLAN WLAN}, - * {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN WWAN} transport in telephony. - * - * @param networkRequest Network request - * @param transport The preferred transport type for the request. The transport here is - * WWAN/WLAN. - * @return {@code true} if the connectivity transport can satisfy the network request, otherwise - * {@code false}. - */ - private boolean canConnectivityTransportSatisfyNetworkRequest( - @NonNull TelephonyNetworkRequest networkRequest, @TransportType int transport) { - // When the device is on satellite, only restricted network request can request network. - if (mServiceState.isUsingNonTerrestrialNetwork() - && networkRequest.getNativeNetworkRequest().hasCapability( - NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)) { - return false; - } - - // If the network request does not specify cellular or satellite, then it can be - // satisfied when the device is either on cellular ot satellite. - if (!networkRequest.getNativeNetworkRequest().hasTransport( - NetworkCapabilities.TRANSPORT_CELLULAR) - && !networkRequest.getNativeNetworkRequest().hasTransport( - NetworkCapabilities.TRANSPORT_SATELLITE)) { - return true; - } - - // Check if this is a IWLAN network request. - if (networkRequest.getNativeNetworkRequest().hasTransport( - NetworkCapabilities.TRANSPORT_CELLULAR) - && transport == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) { - // If the cellular request would result in bringing up network on IWLAN, then no - // need to check if the device is using satellite network. - return true; - } - - // As a short term solution, allowing some networks to be always marked as cellular - // transport if certain capabilities are in the network request. - if (networkRequest.getNativeNetworkRequest().hasTransport( - NetworkCapabilities.TRANSPORT_CELLULAR) && Arrays.stream( - networkRequest.getCapabilities()) - .anyMatch(mDataConfigManager.getForcedCellularTransportCapabilities()::contains)) { - return true; - } - - // If the network is cellular, then the request must specify cellular transport. Or if the - // the network is satellite, then the request must specify satellite transport and - // restricted. - return (mServiceState.isUsingNonTerrestrialNetwork() - && networkRequest.getNativeNetworkRequest().hasTransport( - NetworkCapabilities.TRANSPORT_SATELLITE)) - || (!mServiceState.isUsingNonTerrestrialNetwork() - && networkRequest.getNativeNetworkRequest().hasTransport( - NetworkCapabilities.TRANSPORT_CELLULAR)); - } - /** * tethering and enterprise capabilities are not respected as restricted requests. For a request * with these capabilities, any soft disallowed reasons are honored. @@ -2376,8 +2300,6 @@ public class DataNetworkController extends Handler { return DataNetwork.TEAR_DOWN_REASON_HANDOVER_FAILED; case DATA_LIMIT_REACHED: return DataNetwork.TEAR_DOWN_REASON_DATA_LIMIT_REACHED; - case DATA_NETWORK_TRANSPORT_NOT_ALLOWED: - return DataNetwork.TEAR_DOWN_REASON_DATA_NETWORK_TRANSPORT_NOT_ALLOWED; } } return DataNetwork.TEAR_DOWN_REASON_NONE; @@ -3668,7 +3590,7 @@ public class DataNetworkController extends Handler { return true; } - if (oldNri.isNonTerrestrialNetwork() != newNri.isNonTerrestrialNetwork()) { + if (!oldNri.isNonTerrestrialNetwork() && newNri.isNonTerrestrialNetwork()) { return true; } @@ -3725,7 +3647,7 @@ public class DataNetworkController extends Handler { return true; } - if (oldSS.isUsingNonTerrestrialNetwork() != newSS.isUsingNonTerrestrialNetwork()) { + if (oldSS.isUsingNonTerrestrialNetwork() && !newSS.isUsingNonTerrestrialNetwork()) { return true; } @@ -4100,6 +4022,41 @@ public class DataNetworkController extends Handler { return packages; } + /** + * Check whether data is disallowed while using satellite + * @param capabilities An array of the NetworkCapabilities to be checked + * @return {@code true} if the capabilities contain any capability that are restricted + * while using satellite else {@code false} + */ + private boolean isDataDisallowedDueToSatellite(@NetCapability int[] capabilities) { + if (!mFeatureFlags.carrierEnabledSatelliteFlag()) { + return false; + } + + if (!mServiceState.isUsingNonTerrestrialNetwork()) { + // Device is not connected to satellite + return false; + } + + Set restrictedCapabilities = Set.of(NetworkCapabilities.NET_CAPABILITY_INTERNET); + if (Arrays.stream(capabilities).noneMatch(restrictedCapabilities::contains)) { + // Only internet data disallowed while using satellite + return false; + } + + for (NetworkRegistrationInfo nri : mServiceState.getNetworkRegistrationInfoList()) { + if (nri.isNonTerrestrialNetwork() + && nri.getAvailableServices().contains( + NetworkRegistrationInfo.SERVICE_TYPE_DATA)) { + // Data is supported while using satellite + return false; + } + } + + // Data is disallowed while using satellite + return true; + } + /** * Request network validation. * diff --git a/src/java/com/android/internal/telephony/data/DataProfileManager.java b/src/java/com/android/internal/telephony/data/DataProfileManager.java index 0da220b057..51fc71babb 100644 --- a/src/java/com/android/internal/telephony/data/DataProfileManager.java +++ b/src/java/com/android/internal/telephony/data/DataProfileManager.java @@ -899,7 +899,7 @@ public class DataProfileManager extends Handler { TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_DUN) - .build(), mPhone, mFeatureFlags); + .build(), mPhone); return getDataProfileForNetworkRequest(networkRequest, networkType, mPhone.getServiceState().isUsingNonTerrestrialNetwork(), mDataNetworkController.isEsimBootStrapProvisioningActivated(), diff --git a/src/java/com/android/internal/telephony/data/DataRetryManager.java b/src/java/com/android/internal/telephony/data/DataRetryManager.java index 1fdc1829d4..5933463517 100644 --- a/src/java/com/android/internal/telephony/data/DataRetryManager.java +++ b/src/java/com/android/internal/telephony/data/DataRetryManager.java @@ -1192,7 +1192,7 @@ public class DataRetryManager extends Handler { boolean retryScheduled = false; List groupedNetworkRequestLists = - DataUtils.getGroupedNetworkRequestList(requestList, mFlags); + DataUtils.getGroupedNetworkRequestList(requestList); for (DataSetupRetryRule retryRule : mDataSetupRetryRuleList) { if (retryRule.isPermanentFailCauseRule() && retryRule.getFailCauses().contains(cause)) { if (dataProfile.getApnSetting() != null) { diff --git a/src/java/com/android/internal/telephony/data/DataUtils.java b/src/java/com/android/internal/telephony/data/DataUtils.java index 2693902099..0dda7b53e5 100644 --- a/src/java/com/android/internal/telephony/data/DataUtils.java +++ b/src/java/com/android/internal/telephony/data/DataUtils.java @@ -41,7 +41,6 @@ import android.telephony.ims.feature.ImsFeature; import android.util.ArrayMap; import com.android.internal.telephony.data.DataNetworkController.NetworkRequestList; -import com.android.internal.telephony.flags.FeatureFlags; import com.android.telephony.Rlog; import java.text.SimpleDateFormat; @@ -407,59 +406,35 @@ public class DataUtils { * Group the network requests into several list that contains the same network capabilities. * * @param networkRequestList The provided network requests. - * @param featureFlags The feature flag. - * * @return The network requests after grouping. */ public static @NonNull List getGroupedNetworkRequestList( - @NonNull NetworkRequestList networkRequestList, @NonNull FeatureFlags featureFlags) { + @NonNull NetworkRequestList networkRequestList) { + // Key is the capabilities set. + Map, NetworkRequestList> requestsMap = new ArrayMap<>(); + for (TelephonyNetworkRequest networkRequest : networkRequestList) { + requestsMap.computeIfAbsent(Arrays.stream(networkRequest.getCapabilities()) + .boxed().collect(Collectors.toSet()), + v -> new NetworkRequestList()).add(networkRequest); + } List requests = new ArrayList<>(); - if (featureFlags.carrierEnabledSatelliteFlag()) { - record NetworkCapabilitiesKey(Set caps, Set enterpriseIds, - Set transportTypes) { } - - // Key is the combination of capabilities, enterprise ids, and transport types. - Map requestsMap = new ArrayMap<>(); - for (TelephonyNetworkRequest networkRequest : networkRequestList) { - requestsMap.computeIfAbsent(new NetworkCapabilitiesKey( - Arrays.stream(networkRequest.getCapabilities()) - .boxed().collect(Collectors.toSet()), - Arrays.stream(networkRequest.getNativeNetworkRequest() - .getEnterpriseIds()) - .boxed().collect(Collectors.toSet()), - Arrays.stream(networkRequest.getNativeNetworkRequest() - .getTransportTypes()) - .boxed().collect(Collectors.toSet()) - ), - v -> new NetworkRequestList()).add(networkRequest); - } - requests.addAll(requestsMap.values()); - } else { - // Key is the capabilities set. - Map, NetworkRequestList> requestsMap = new ArrayMap<>(); - for (TelephonyNetworkRequest networkRequest : networkRequestList) { - requestsMap.computeIfAbsent(Arrays.stream(networkRequest.getCapabilities()) - .boxed().collect(Collectors.toSet()), - v -> new NetworkRequestList()).add(networkRequest); + // Create separate groups for enterprise requests with different enterprise IDs. + for (NetworkRequestList requestList : requestsMap.values()) { + List enterpriseRequests = requestList.stream() + .filter(request -> + request.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) + .collect(Collectors.toList()); + if (enterpriseRequests.isEmpty()) { + requests.add(requestList); + continue; } - // Create separate groups for enterprise requests with different enterprise IDs. - for (NetworkRequestList requestList : requestsMap.values()) { - List enterpriseRequests = requestList.stream() - .filter(request -> request.hasCapability( - NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) - .toList(); - if (enterpriseRequests.isEmpty()) { - requests.add(requestList); - continue; - } - // Key is the enterprise ID - Map enterpriseRequestsMap = new ArrayMap<>(); - for (TelephonyNetworkRequest request : enterpriseRequests) { - enterpriseRequestsMap.computeIfAbsent(request.getCapabilityDifferentiator(), - v -> new NetworkRequestList()).add(request); - } - requests.addAll(enterpriseRequestsMap.values()); + // Key is the enterprise ID + Map enterpriseRequestsMap = new ArrayMap<>(); + for (TelephonyNetworkRequest request : enterpriseRequests) { + enterpriseRequestsMap.computeIfAbsent(request.getCapabilityDifferentiator(), + v -> new NetworkRequestList()).add(request); } + requests.addAll(enterpriseRequestsMap.values()); } // Sort the requests so the network request list with higher priority will be at the front. return requests.stream() diff --git a/src/java/com/android/internal/telephony/data/PhoneSwitcher.java b/src/java/com/android/internal/telephony/data/PhoneSwitcher.java index 6dd4dd15da..8dc8098aed 100644 --- a/src/java/com/android/internal/telephony/data/PhoneSwitcher.java +++ b/src/java/com/android/internal/telephony/data/PhoneSwitcher.java @@ -17,7 +17,6 @@ package com.android.internal.telephony.data; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; -import static android.net.NetworkCapabilities.TRANSPORT_SATELLITE; import static android.telephony.CarrierConfigManager.KEY_DATA_SWITCH_VALIDATION_TIMEOUT_LONG; import static android.telephony.SubscriptionManager.DEFAULT_PHONE_INDEX; import static android.telephony.SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; @@ -571,7 +570,6 @@ public class PhoneSwitcher extends Handler { final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder() .addTransportType(TRANSPORT_CELLULAR) - .addTransportType(TRANSPORT_SATELLITE) .addCapability(NetworkCapabilities.NET_CAPABILITY_MMS) .addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL) .addCapability(NetworkCapabilities.NET_CAPABILITY_DUN) @@ -989,7 +987,7 @@ public class PhoneSwitcher extends Handler { private void onRequestNetwork(NetworkRequest networkRequest) { TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest( - networkRequest, PhoneFactory.getDefaultPhone(), mFlags); + networkRequest, PhoneFactory.getDefaultPhone()); if (!mNetworkRequestList.contains(telephonyNetworkRequest)) { mNetworkRequestList.add(telephonyNetworkRequest); onEvaluate(REQUESTS_CHANGED, "netRequest"); @@ -998,7 +996,7 @@ public class PhoneSwitcher extends Handler { private void onReleaseNetwork(NetworkRequest networkRequest) { TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest( - networkRequest, PhoneFactory.getDefaultPhone(), mFlags); + networkRequest, PhoneFactory.getDefaultPhone()); if (mNetworkRequestList.remove(telephonyNetworkRequest)) { onEvaluate(REQUESTS_CHANGED, "netReleased"); collectReleaseNetworkMetrics(networkRequest); diff --git a/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java b/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java index 99a443d5df..377c21990d 100644 --- a/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java +++ b/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java @@ -138,7 +138,6 @@ public class TelephonyNetworkFactory extends NetworkFactory { public NetworkCapabilities makeNetworkFilter(int subscriptionId) { final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) - .addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE) .addCapability(NetworkCapabilities.NET_CAPABILITY_MMS) .addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL) .addCapability(NetworkCapabilities.NET_CAPABILITY_DUN) @@ -264,7 +263,7 @@ public class TelephonyNetworkFactory extends NetworkFactory { private void onNeedNetworkFor(Message msg) { TelephonyNetworkRequest networkRequest = - new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone, mFlags); + new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone); boolean shouldApply = mPhoneSwitcher.shouldApplyNetworkRequest( networkRequest, mPhone.getPhoneId()); @@ -290,7 +289,7 @@ public class TelephonyNetworkFactory extends NetworkFactory { private void onReleaseNetworkFor(Message msg) { TelephonyNetworkRequest networkRequest = - new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone, mFlags); + new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone); boolean applied = mNetworkRequests.get(networkRequest) != AccessNetworkConstants.TRANSPORT_TYPE_INVALID; diff --git a/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java b/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java index f0ba8d678a..26683020a0 100644 --- a/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java +++ b/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java @@ -31,7 +31,6 @@ import android.telephony.data.TrafficDescriptor; import android.telephony.data.TrafficDescriptor.OsAppId; import com.android.internal.telephony.Phone; -import com.android.internal.telephony.flags.FeatureFlags; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -183,21 +182,15 @@ public class TelephonyNetworkRequest { /** The data evaluation result. */ private @Nullable DataEvaluation mEvaluation; - /** Feature flag. */ - private final @NonNull FeatureFlags mFeatureFlags; - /** * Constructor * * @param request The native network request from the clients. * @param phone The phone instance - * @param featureFlags The feature flag */ - public TelephonyNetworkRequest(@NonNull NetworkRequest request, @NonNull Phone phone, - @NonNull FeatureFlags featureFlags) { + public TelephonyNetworkRequest(NetworkRequest request, Phone phone) { mPhone = phone; mNativeNetworkRequest = request; - mFeatureFlags = featureFlags; int capabilitiesAttributes = CAPABILITY_ATTRIBUTE_NONE; for (int networkCapability : mNativeNetworkRequest.getCapabilities()) { @@ -281,31 +274,6 @@ public class TelephonyNetworkRequest { if ((hasAttribute(CAPABILITY_ATTRIBUTE_APN_SETTING) || hasAttribute(CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN)) && dataProfile.getApnSetting() != null) { - if (mFeatureFlags.carrierEnabledSatelliteFlag()) { - if (mNativeNetworkRequest.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) - && !mNativeNetworkRequest.hasTransport( - NetworkCapabilities.TRANSPORT_SATELLITE)) { - if (Arrays.stream(getCapabilities()).noneMatch(mDataConfigManager - .getForcedCellularTransportCapabilities()::contains)) { - // If the request is explicitly for the cellular, then the data profile - // needs to support cellular. - if (!dataProfile.getApnSetting().isForInfrastructure( - ApnSetting.INFRASTRUCTURE_CELLULAR)) { - return false; - } - } - } else if (mNativeNetworkRequest.hasTransport( - NetworkCapabilities.TRANSPORT_SATELLITE) - && !mNativeNetworkRequest.hasTransport( - NetworkCapabilities.TRANSPORT_CELLULAR)) { - // If the request is explicitly for the satellite, then the data profile needs - // to support satellite. - if (!dataProfile.getApnSetting().isForInfrastructure( - ApnSetting.INFRASTRUCTURE_SATELLITE)) { - return false; - } - } - } // Fallback to the legacy APN type matching. List apnTypes = Arrays.stream(getCapabilities()).boxed() .map(DataUtils::networkCapabilityToApnType) -- cgit v1.2.3