aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-03-05 20:44:24 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-03-05 20:44:24 +0000
commit27ea036e6c35594951f2efd0786f078ac3321d63 (patch)
treeddd448f339a8be00f8fa93981a1472c03d98c8f2 /src/java/com/android/internal/telephony
parent66eb66dfd96becbf0368392c1e4bca4ce960c98d (diff)
parentdc40c8ab95282559def8001f76bfe95212535e92 (diff)
downloadtelephony-27ea036e6c35594951f2efd0786f078ac3321d63.tar.gz
Merge cherrypicks of ['googleplex-android-review.googlesource.com/26445667'] into 24Q2-release.
Change-Id: Ia71b7f8df9dfeb5373c37689a61b6a80258e59ea
Diffstat (limited to 'src/java/com/android/internal/telephony')
-rw-r--r--src/java/com/android/internal/telephony/data/DataConfigManager.java15
-rw-r--r--src/java/com/android/internal/telephony/data/DataEvaluation.java4
-rw-r--r--src/java/com/android/internal/telephony/data/DataNetwork.java39
-rw-r--r--src/java/com/android/internal/telephony/data/DataNetworkController.java153
-rw-r--r--src/java/com/android/internal/telephony/data/DataProfileManager.java2
-rw-r--r--src/java/com/android/internal/telephony/data/DataRetryManager.java2
-rw-r--r--src/java/com/android/internal/telephony/data/DataUtils.java71
-rw-r--r--src/java/com/android/internal/telephony/data/PhoneSwitcher.java6
-rw-r--r--src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java5
-rw-r--r--src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java34
10 files changed, 89 insertions, 242 deletions
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
@@ -1436,18 +1436,6 @@ public class DataConfigManager extends Handler {
}
/**
- * @return The capabilities that network will be forced to mark as cellular transport.
- */
- public @NetCapability Set<Integer> 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);
@@ -2225,26 +2214,11 @@ 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
@@ -2099,65 +2082,6 @@ public class DataNetworkController extends Handler {
}
/**
- * 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.
* @param networkRequest The network request to evaluate.
@@ -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;
}
@@ -4101,6 +4023,41 @@ public class DataNetworkController extends Handler {
}
/**
+ * 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<Integer> 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.
*
* Nnetwork validation request is sent to the DataNetwork that matches the network capability
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<NetworkRequestList> 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<NetworkRequestList> getGroupedNetworkRequestList(
- @NonNull NetworkRequestList networkRequestList, @NonNull FeatureFlags featureFlags) {
+ @NonNull NetworkRequestList networkRequestList) {
+ // Key is the capabilities set.
+ Map<Set<Integer>, NetworkRequestList> requestsMap = new ArrayMap<>();
+ for (TelephonyNetworkRequest networkRequest : networkRequestList) {
+ requestsMap.computeIfAbsent(Arrays.stream(networkRequest.getCapabilities())
+ .boxed().collect(Collectors.toSet()),
+ v -> new NetworkRequestList()).add(networkRequest);
+ }
List<NetworkRequestList> requests = new ArrayList<>();
- if (featureFlags.carrierEnabledSatelliteFlag()) {
- record NetworkCapabilitiesKey(Set<Integer> caps, Set<Integer> enterpriseIds,
- Set<Integer> transportTypes) { }
-
- // Key is the combination of capabilities, enterprise ids, and transport types.
- Map<NetworkCapabilitiesKey, NetworkRequestList> 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<Set<Integer>, 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<TelephonyNetworkRequest> 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<TelephonyNetworkRequest> 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<Integer, NetworkRequestList> 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<Integer, NetworkRequestList> 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<Integer> apnTypes = Arrays.stream(getCapabilities()).boxed()
.map(DataUtils::networkCapabilityToApnType)