aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNagendra Prasad Nagarle Basavaraju <nagendranb@google.com>2024-02-09 03:35:53 +0000
committerJack Yu <jackyu@google.com>2024-03-04 00:05:39 -0800
commit7304925011cd970cda191284bf3984b7f487b741 (patch)
treec17da284330fe4c4cfae93b54ff6c15d3e107e99
parentbb8e7f93bd0f4483a1a65dcf03c76db153d93b01 (diff)
downloadtelephony-7304925011cd970cda191284bf3984b7f487b741.tar.gz
Satellite Internet Support
1. Restrict network on satellite. 2. Support satellite transport. 3. For a short term solution, add possibility to mark satellite network with cellular transport. Bug: 326972202 Test: atest FrameworksTelephonyTests, CtsTelephonyTestCases, Test: Device test at b/324536098#comment76 Test: Basic telephony functionality tests Change-Id: I62ca42a254d6faa15a3adaef5ead9a1b9d17d2b1
-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
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java178
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkTest.java202
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java68
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataRetryManagerTest.java22
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java52
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java96
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java3
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkRequestTest.java139
18 files changed, 785 insertions, 306 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataConfigManager.java b/src/java/com/android/internal/telephony/data/DataConfigManager.java
index 0e06dad972..6ad89ce15c 100644
--- a/src/java/com/android/internal/telephony/data/DataConfigManager.java
+++ b/src/java/com/android/internal/telephony/data/DataConfigManager.java
@@ -1436,6 +1436,18 @@ 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
*/
@@ -1543,6 +1555,9 @@ 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 3d10e9cd22..a54884f911 100644
--- a/src/java/com/android/internal/telephony/data/DataEvaluation.java
+++ b/src/java/com/android/internal/telephony/data/DataEvaluation.java
@@ -346,7 +346,9 @@ 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_LIMIT_REACHED(true),
+ /** Data network connectivity transport not allowed. */
+ DATA_NETWORK_TRANSPORT_NOT_ALLOWED(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 0dbbc5c024..02d2075a8c 100644
--- a/src/java/com/android/internal/telephony/data/DataNetwork.java
+++ b/src/java/com/android/internal/telephony/data/DataNetwork.java
@@ -314,6 +314,7 @@ 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 {}
@@ -413,6 +414,9 @@ 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 //
//********************************************************************************************//
@@ -698,6 +702,11 @@ 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;
@@ -988,6 +997,8 @@ 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);
@@ -2214,11 +2225,26 @@ 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()
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+ 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);
+ }
+
boolean roaming = mPhone.getServiceState().getDataRoaming();
builder.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
@@ -2385,6 +2411,11 @@ 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.
@@ -2401,7 +2432,7 @@ public class DataNetwork extends StateMachine {
DataProfile dataProfile = mDataNetworkController.getDataProfileManager()
.getDataProfileForNetworkRequest(new TelephonyNetworkRequest(
new NetworkRequest.Builder().addCapability(
- NetworkCapabilities.NET_CAPABILITY_MMS).build(), mPhone),
+ NetworkCapabilities.NET_CAPABILITY_MMS).build(), mPhone, mFlags),
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
@@ -3790,6 +3821,8 @@ 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 70d3b23142..7eb7c164c7 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);
+ .build(), mPhone, mFeatureFlags);
// 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);
+ .build(), mPhone, mFeatureFlags);
DataEvaluation evaluation = evaluateNetworkRequest(internetRequest,
DataEvaluationReason.EXTERNAL_QUERY);
return evaluation.getDataDisallowedReasons();
@@ -1535,6 +1535,13 @@ 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(
@@ -1549,14 +1556,13 @@ 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;
}
- evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_REQUEST);
- if (emergencyProfile != null) {
- evaluation.setCandidateDataProfile(emergencyProfile);
+ if (!evaluation.containsDisallowedReasons()) {
+ evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_REQUEST);
+ if (emergencyProfile != null) {
+ evaluation.setCandidateDataProfile(emergencyProfile);
+ }
}
networkRequest.setEvaluation(evaluation);
log(evaluation.toString());
@@ -1645,11 +1651,6 @@ 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())) {
@@ -1822,7 +1823,7 @@ public class DataNetworkController extends Handler {
networkRequestList.add(networkRequest);
}
}
- return DataUtils.getGroupedNetworkRequestList(networkRequestList);
+ return DataUtils.getGroupedNetworkRequestList(networkRequestList, mFeatureFlags);
}
/**
@@ -1891,10 +1892,26 @@ public class DataNetworkController extends Handler {
evaluation.addDataDisallowedReason(DataDisallowedReason.CDMA_EMERGENCY_CALLBACK_MODE);
}
- // Check whether data is disallowed while using satellite
- if (isDataDisallowedDueToSatellite(dataNetwork.getNetworkCapabilities()
- .getCapabilities())) {
- evaluation.addDataDisallowedReason(DataDisallowedReason.SERVICE_OPTION_NOT_SUPPORTED);
+ // 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 limit reached for bootstrap sim, else re-evaluate based on the timer
@@ -2082,6 +2099,65 @@ 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.
@@ -2300,6 +2376,8 @@ 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;
@@ -3590,7 +3668,7 @@ public class DataNetworkController extends Handler {
return true;
}
- if (!oldNri.isNonTerrestrialNetwork() && newNri.isNonTerrestrialNetwork()) {
+ if (oldNri.isNonTerrestrialNetwork() != newNri.isNonTerrestrialNetwork()) {
return true;
}
@@ -3647,7 +3725,7 @@ public class DataNetworkController extends Handler {
return true;
}
- if (oldSS.isUsingNonTerrestrialNetwork() && !newSS.isUsingNonTerrestrialNetwork()) {
+ if (oldSS.isUsingNonTerrestrialNetwork() != newSS.isUsingNonTerrestrialNetwork()) {
return true;
}
@@ -4023,41 +4101,6 @@ 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 51fc71babb..0da220b057 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);
+ .build(), mPhone, mFeatureFlags);
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 5933463517..1fdc1829d4 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);
+ DataUtils.getGroupedNetworkRequestList(requestList, mFlags);
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 0dda7b53e5..2693902099 100644
--- a/src/java/com/android/internal/telephony/data/DataUtils.java
+++ b/src/java/com/android/internal/telephony/data/DataUtils.java
@@ -41,6 +41,7 @@ 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;
@@ -406,35 +407,59 @@ 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) {
- // 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);
- }
+ @NonNull NetworkRequestList networkRequestList, @NonNull FeatureFlags featureFlags) {
List<NetworkRequestList> requests = new ArrayList<>();
- // 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;
+ 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);
}
- // Key is the enterprise ID
- Map<Integer, NetworkRequestList> enterpriseRequestsMap = new ArrayMap<>();
- for (TelephonyNetworkRequest request : enterpriseRequests) {
- enterpriseRequestsMap.computeIfAbsent(request.getCapabilityDifferentiator(),
- v -> new NetworkRequestList()).add(request);
+ // 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());
}
- 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 8dc8098aed..6dd4dd15da 100644
--- a/src/java/com/android/internal/telephony/data/PhoneSwitcher.java
+++ b/src/java/com/android/internal/telephony/data/PhoneSwitcher.java
@@ -17,6 +17,7 @@
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;
@@ -570,6 +571,7 @@ 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)
@@ -987,7 +989,7 @@ public class PhoneSwitcher extends Handler {
private void onRequestNetwork(NetworkRequest networkRequest) {
TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest(
- networkRequest, PhoneFactory.getDefaultPhone());
+ networkRequest, PhoneFactory.getDefaultPhone(), mFlags);
if (!mNetworkRequestList.contains(telephonyNetworkRequest)) {
mNetworkRequestList.add(telephonyNetworkRequest);
onEvaluate(REQUESTS_CHANGED, "netRequest");
@@ -996,7 +998,7 @@ public class PhoneSwitcher extends Handler {
private void onReleaseNetwork(NetworkRequest networkRequest) {
TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest(
- networkRequest, PhoneFactory.getDefaultPhone());
+ networkRequest, PhoneFactory.getDefaultPhone(), mFlags);
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 377c21990d..99a443d5df 100644
--- a/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java
+++ b/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java
@@ -138,6 +138,7 @@ 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)
@@ -263,7 +264,7 @@ public class TelephonyNetworkFactory extends NetworkFactory {
private void onNeedNetworkFor(Message msg) {
TelephonyNetworkRequest networkRequest =
- new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone);
+ new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone, mFlags);
boolean shouldApply = mPhoneSwitcher.shouldApplyNetworkRequest(
networkRequest, mPhone.getPhoneId());
@@ -289,7 +290,7 @@ public class TelephonyNetworkFactory extends NetworkFactory {
private void onReleaseNetworkFor(Message msg) {
TelephonyNetworkRequest networkRequest =
- new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone);
+ new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone, mFlags);
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 26683020a0..f0ba8d678a 100644
--- a/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java
+++ b/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java
@@ -31,6 +31,7 @@ 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;
@@ -182,15 +183,21 @@ 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(NetworkRequest request, Phone phone) {
+ public TelephonyNetworkRequest(@NonNull NetworkRequest request, @NonNull Phone phone,
+ @NonNull FeatureFlags featureFlags) {
mPhone = phone;
mNativeNetworkRequest = request;
+ mFeatureFlags = featureFlags;
int capabilitiesAttributes = CAPABILITY_ATTRIBUTE_NONE;
for (int networkCapability : mNativeNetworkRequest.getCapabilities()) {
@@ -274,6 +281,31 @@ 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)
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
index 9423551441..1a046325c7 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
@@ -182,7 +182,6 @@ public class DataNetworkControllerTest extends TelephonyTest {
private LinkBandwidthEstimatorCallback mLinkBandwidthEstimatorCallback;
private boolean mIsNonTerrestrialNetwork = false;
- private ArrayList<Integer> mCarrierSupportedSatelliteServices = new ArrayList<>();
private FeatureFlags mFeatureFlags;
private final DataProfile mGeneralPurposeDataProfile = new DataProfile.Builder()
@@ -700,7 +699,6 @@ public class DataNetworkControllerTest extends TelephonyTest {
.setDomain(NetworkRegistrationInfo.DOMAIN_PS)
.setDataSpecificInfo(dsri)
.setIsNonTerrestrialNetwork(mIsNonTerrestrialNetwork)
- .setAvailableServices(mCarrierSupportedSatelliteServices)
.setEmergencyOnly(isEmergencyOnly)
.build());
@@ -710,7 +708,6 @@ public class DataNetworkControllerTest extends TelephonyTest {
.setRegistrationState(iwlanRegState)
.setDomain(NetworkRegistrationInfo.DOMAIN_PS)
.setIsNonTerrestrialNetwork(mIsNonTerrestrialNetwork)
- .setAvailableServices(mCarrierSupportedSatelliteServices)
.setEmergencyOnly(isEmergencyOnly)
.build());
@@ -854,6 +851,9 @@ public class DataNetworkControllerTest extends TelephonyTest {
.config_enable_iwlan_handover_policy, true);
mContextFixture.putBooleanResource(com.android.internal.R.bool
.config_enhanced_iwlan_handover_check, true);
+ mContextFixture.putStringArrayResource(com.android.internal.R.array
+ .config_force_cellular_transport_capabilities,
+ new String[] {"ims", "eims", "xcap"});
}
@Before
@@ -896,6 +896,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
doReturn(PhoneConstants.State.IDLE).when(mCT).getState();
doReturn(new SubscriptionInfoInternal.Builder().setId(1).build())
.when(mSubscriptionManagerService).getSubscriptionInfoInternal(anyInt());
+ doReturn(true).when(mFeatureFlags).carrierEnabledSatelliteFlag();
List<SubscriptionInfo> infoList = new ArrayList<>();
infoList.add(mMockSubInfo);
@@ -1136,15 +1137,24 @@ public class DataNetworkControllerTest extends TelephonyTest {
}
private @NonNull TelephonyNetworkRequest createNetworkRequest(Integer... capabilities) {
+ return createNetworkRequest(false, capabilities);
+ }
+
+ private @NonNull TelephonyNetworkRequest createNetworkRequest(boolean restricted,
+ Integer... capabilities) {
NetworkCapabilities netCaps = new NetworkCapabilities();
for (int networkCapability : capabilities) {
netCaps.addCapability(networkCapability);
}
+ if (restricted) {
+ netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ }
+
NetworkRequest nativeNetworkRequest = new NetworkRequest(netCaps,
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
- return new TelephonyNetworkRequest(nativeNetworkRequest, mPhone);
+ return new TelephonyNetworkRequest(nativeNetworkRequest, mPhone, mFeatureFlags);
}
// The purpose of this test is to make sure the network request insertion/removal works as
@@ -1405,7 +1415,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
new NetworkRequest(netCaps, ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId,
- NetworkRequest.Type.REQUEST), mPhone));
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags));
processAllMessages();
verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE);
List<DataNetwork> dataNetworkList = getDataNetworks();
@@ -1708,73 +1718,124 @@ public class DataNetworkControllerTest extends TelephonyTest {
}
@Test
- public void testNonTerrestrialNetworkChangedWithoutDataSupport() throws Exception {
- when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
+ public void testIsNetworkRequestSatisfiedByTransportCellularTransportRequest() {
mIsNonTerrestrialNetwork = true;
- // Data is not supported while using satellite
- mCarrierSupportedSatelliteServices.add(NetworkRegistrationInfo.SERVICE_TYPE_VOICE);
+
+ // Data is not supported for cellular transport network request while using satellite
+ // network
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
- mDataNetworkControllerUT.addNetworkRequest(
- createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
+ // Set network request transport as Cellular in satellite network
+ NetworkCapabilities netCaps = new NetworkCapabilities();
+ netCaps.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+ netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
+ new NetworkRequest(netCaps, ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId,
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags));
processAllMessages();
- // Data with internet capability should not be allowed
- // when the device is using non-terrestrial network
- verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ // Verify data is not connected since Network request cannot satisfy by transport
+ verify(mMockedDataNetworkControllerCallback, never())
+ .onConnectedInternetDataNetworksChanged(any());
mIsNonTerrestrialNetwork = false;
- mCarrierSupportedSatelliteServices.clear();
+ }
+
+ @Test
+ public void testIsNetworkRequestSatisfiedByTransportSatelliteTransportRequest_Terrestrial() {
+ // Set network request transport as satellite in satellite network
+ NetworkCapabilities netCaps = new NetworkCapabilities();
+ netCaps.addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE);
+ netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
+ new NetworkRequest(netCaps, ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId,
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags));
+ processAllMessages();
+
+ // Verify data is not supported for satellite transport network request while using cellular
+ verify(mMockedDataNetworkControllerCallback, never())
+ .onConnectedInternetDataNetworksChanged(any());
+
+ }
+
+ @Test
+ public void testIsNetworkRequestSatisfiedByTransportSatelliteTransportRequest() {
+ mIsNonTerrestrialNetwork = true;
+
+ // Data is supported for satellite transport network request while using satellite network
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
- // Verify data is restored.
- verifyInternetConnected();
+ // Set network request transport as satellite while using satellite network
+ NetworkCapabilities netCaps = new NetworkCapabilities();
+ netCaps.addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE);
+ netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
+ new NetworkRequest(netCaps, ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId,
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags));
+ processAllMessages();
+
+ // Verify data is connected since Network request satisfy by transport
+ verify(mMockedDataNetworkControllerCallback).onConnectedInternetDataNetworksChanged(any());
+
+ mIsNonTerrestrialNetwork = false;
}
@Test
- public void testNonTerrestrialNetworkWithDataSupport() throws Exception {
- when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
+ public void testIsNetworkRequestSatisfiedByTransportNoTransportRequest() {
mIsNonTerrestrialNetwork = true;
- // Data is supported while using satellite
- mCarrierSupportedSatelliteServices.add(NetworkRegistrationInfo.SERVICE_TYPE_DATA);
+
+ // Data is supported for no transport network request while using satellite network
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
- mDataNetworkControllerUT.addNetworkRequest(
- createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
+ // Set network request transport as no transport with Internet capability
+ NetworkCapabilities netCaps = new NetworkCapabilities();
+ netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
+ new NetworkRequest(netCaps, ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId,
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags));
processAllMessages();
- // Verify data is connected.
- verifyInternetConnected();
+ // Verify data is connected since Network request satisfy by transport
+ verify(mMockedDataNetworkControllerCallback).onConnectedInternetDataNetworksChanged(any());
mIsNonTerrestrialNetwork = false;
- mCarrierSupportedSatelliteServices.clear();
}
@Test
- public void testNonTerrestrialNetworkWithFlagDisabled() throws Exception {
- when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(false);
-
+ public void testIsNetworkCapabilitySatelliteAndCellularCapableImsCellularTransportRequest()
+ throws Exception {
mIsNonTerrestrialNetwork = true;
- // Data is not supported while using satellite
- mCarrierSupportedSatelliteServices.add(NetworkRegistrationInfo.SERVICE_TYPE_VOICE);
+
+ // IMS PDN is supported for cellular network request while using satellite network
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
- mDataNetworkControllerUT.addNetworkRequest(
- createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
+ // Set network request transport as Cellular + IMS
+ NetworkCapabilities netCaps = new NetworkCapabilities();
+ netCaps.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+ netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
+ netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_MMTEL);
+ netCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
+ new NetworkRequest(netCaps, ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId,
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags));
processAllMessages();
- // As feature is disabled, data is connected.
- verifyInternetConnected();
+ // Verify ims is connected since, cellular network request for ims is allowed while using
+ // satellite network
+ verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_IMS,
+ NetworkCapabilities.NET_CAPABILITY_MMTEL);
mIsNonTerrestrialNetwork = false;
- mCarrierSupportedSatelliteServices.clear();
}
-
@Test
public void testRoamingDataChanged() throws Exception {
doReturn(true).when(mServiceState).getDataRoaming();
@@ -3437,7 +3498,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
mDataNetworkControllerUT.addNetworkRequest(tnr);
processAllMessages();
@@ -3461,7 +3522,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
mDataNetworkControllerUT.addNetworkRequest(tnr);
processAllMessages();
@@ -3533,7 +3594,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
mDataNetworkControllerUT.addNetworkRequest(
- new TelephonyNetworkRequest(nativeNetworkRequest, mPhone));
+ new TelephonyNetworkRequest(nativeNetworkRequest, mPhone, mFeatureFlags));
processAllMessages();
verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_DUN);
@@ -3649,7 +3710,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
mDataNetworkControllerUT.addNetworkRequest(
- new TelephonyNetworkRequest(nativeNetworkRequest, mPhone));
+ new TelephonyNetworkRequest(nativeNetworkRequest, mPhone, mFeatureFlags));
processAllMessages();
// Everything should be disconnected.
@@ -3687,7 +3748,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
mDataNetworkControllerUT.addNetworkRequest(
- new TelephonyNetworkRequest(nativeNetworkRequest, mPhone));
+ new TelephonyNetworkRequest(nativeNetworkRequest, mPhone, mFeatureFlags));
processAllMessages();
// Everything should be disconnected.
@@ -3910,7 +3971,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
mDataNetworkControllerUT.addNetworkRequest(
- new TelephonyNetworkRequest(nativeNetworkRequest, mPhone));
+ new TelephonyNetworkRequest(nativeNetworkRequest, mPhone, mFeatureFlags));
processAllMessages();
verifyConnectedNetworkHasDataProfile(mGeneralPurposeDataProfile);
@@ -3934,7 +3995,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
mDataNetworkControllerUT.addNetworkRequest(
- new TelephonyNetworkRequest(nativeNetworkRequest, mPhone));
+ new TelephonyNetworkRequest(nativeNetworkRequest, mPhone, mFeatureFlags));
processAllMessages();
verifyConnectedNetworkHasDataProfile(mGeneralPurposeDataProfile);
@@ -3999,7 +4060,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
NetworkRequest nativeNetworkRequest = new NetworkRequest(netCaps,
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(
- nativeNetworkRequest, mPhone);
+ nativeNetworkRequest, mPhone, mFeatureFlags);
mDataNetworkControllerUT.addNetworkRequest(networkRequest);
@@ -4051,7 +4112,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
NetworkRequest nativeNetworkRequest = new NetworkRequest(netCaps,
ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(
- nativeNetworkRequest, mPhone);
+ nativeNetworkRequest, mPhone, mFeatureFlags);
mDataNetworkControllerUT.addNetworkRequest(networkRequest);
processAllMessages();
@@ -4693,11 +4754,12 @@ public class DataNetworkControllerTest extends TelephonyTest {
ConnectivityManager.TYPE_MOBILE, 0, NetworkRequest.Type.REQUEST);
mDataNetworkControllerUT.addNetworkRequest(new TelephonyNetworkRequest(
- nativeNetworkRequest, mPhone));
+ nativeNetworkRequest, mPhone, mFeatureFlags));
processAllMessages();
// Intentionally create a new telephony request with the original native network request.
- TelephonyNetworkRequest request = new TelephonyNetworkRequest(nativeNetworkRequest, mPhone);
+ TelephonyNetworkRequest request = new TelephonyNetworkRequest(
+ nativeNetworkRequest, mPhone, mFeatureFlags);
mDataNetworkControllerUT.removeNetworkRequest(request);
processAllFutureMessages();
@@ -4788,7 +4850,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
processAllMessages();
verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY);
@@ -4797,7 +4859,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
processAllMessages();
List<DataNetwork> dataNetworkList = getDataNetworks();
assertThat(dataNetworkList).hasSize(1);
@@ -4867,12 +4929,16 @@ public class DataNetworkControllerTest extends TelephonyTest {
@Test
public void testNonTerrestrialNetwork() throws Exception {
- when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
mIsNonTerrestrialNetwork = true;
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
mDataNetworkControllerUT.addNetworkRequest(
- createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_RCS));
+ createNetworkRequest(false, NetworkCapabilities.NET_CAPABILITY_RCS));
+ processAllMessages();
+ verifyAllDataDisconnected();
+
+ mDataNetworkControllerUT.addNetworkRequest(
+ createNetworkRequest(true, NetworkCapabilities.NET_CAPABILITY_RCS));
processAllMessages();
verifyConnectedNetworkHasDataProfile(mNtnDataProfile);
}
@@ -5031,8 +5097,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
}
@Test
- public void testNtnNetworkOnProvisioningProfileClass_WithFlagEnabled() throws Exception {
- when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
+ public void testNtnNetworkOnProvisioningProfileClassWithFlagEnabled() throws Exception {
when(mFeatureFlags.esimBootstrapProvisioningFlag()).thenReturn(true);
// Allowed data limit Unlimited
mContextFixture.putIntResource(com.android.internal.R.integer
@@ -5044,7 +5109,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
mDataNetworkControllerUT.addNetworkRequest(
- createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_RCS));
+ createNetworkRequest(true, NetworkCapabilities.NET_CAPABILITY_RCS));
processAllMessages();
assertThat(mDataNetworkControllerUT.isEsimBootStrapProvisioningActivated()).isTrue();
@@ -5053,8 +5118,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
}
@Test
- public void testNonNtnNetworkOnProvisioningProfileClass_WithFlagEnabled() throws Exception {
- when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
+ public void testNonNtnNetworkOnProvisioningProfileClassWithFlagEnabled() throws Exception {
when(mFeatureFlags.esimBootstrapProvisioningFlag()).thenReturn(true);
doReturn(new SubscriptionInfoInternal.Builder().setId(1)
.setProfileClass(SubscriptionManager.PROFILE_CLASS_PROVISIONING).build())
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkTest.java
index ebfc41a8d8..9605951ffc 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkTest.java
@@ -320,13 +320,13 @@ public class DataNetworkTest extends TelephonyTest {
}
private void serviceStateChanged(@Annotation.NetworkType int networkType,
- @NetworkRegistrationInfo.RegistrationState int regState) {
- serviceStateChanged(networkType, regState, null);
+ @NetworkRegistrationInfo.RegistrationState int regState, boolean isNtn) {
+ serviceStateChanged(networkType, regState, null, isNtn);
}
private void serviceStateChanged(@Annotation.NetworkType int networkType,
@NetworkRegistrationInfo.RegistrationState int regState,
- DataSpecificRegistrationInfo dsri) {
+ DataSpecificRegistrationInfo dsri, boolean isNtn) {
ServiceState ss = new ServiceState();
ss.addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
@@ -334,6 +334,7 @@ public class DataNetworkTest extends TelephonyTest {
.setRegistrationState(regState)
.setDomain(NetworkRegistrationInfo.DOMAIN_PS)
.setDataSpecificInfo(dsri)
+ .setIsNonTerrestrialNetwork(isNtn)
.build());
ss.addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
@@ -410,9 +411,13 @@ public class DataNetworkTest extends TelephonyTest {
doReturn(FAKE_IMSI).when(mPhone).getSubscriberId();
doReturn(true).when(mDataNetworkController)
.isNetworkRequestExisting(any(TelephonyNetworkRequest.class));
+ doReturn(Set.of(NetworkCapabilities.NET_CAPABILITY_IMS,
+ NetworkCapabilities.NET_CAPABILITY_EIMS, NetworkCapabilities.NET_CAPABILITY_XCAP))
+ .when(mDataConfigManager).getForcedCellularTransportCapabilities();
+ doReturn(true).when(mFeatureFlags).carrierEnabledSatelliteFlag();
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, false/*isNtn*/);
}
@After
@@ -446,7 +451,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(
mMockedWwanDataServiceManager, 123, Collections.emptyList(), mDefaultQos);
@@ -551,12 +556,13 @@ public class DataNetworkTest extends TelephonyTest {
.build();
// Out of service
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING, dsri);
+ NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING, dsri,
+ false/*isNtn*/);
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
@@ -597,7 +603,8 @@ public class DataNetworkTest extends TelephonyTest {
.build();
// Out of service
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING, dsri);
+ NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING, dsri,
+ false/*isNtn*/);
DataCallResponse response = new DataCallResponse.Builder()
.setCause(0)
@@ -653,7 +660,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
@@ -742,7 +749,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
List<TrafficDescriptor> tds = List.of(
new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -777,7 +784,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
List<TrafficDescriptor> tds = List.of(
new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -810,7 +817,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
List<TrafficDescriptor> tds = List.of(
new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -843,7 +850,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
List<TrafficDescriptor> tds = List.of(
new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -877,7 +884,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
List<TrafficDescriptor> tds = List.of(
new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -962,7 +969,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(mMockedWlanDataServiceManager, 123);
@@ -1183,7 +1190,7 @@ public class DataNetworkTest extends TelephonyTest {
TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
networkRequestList.add(networkRequest);
SimulatedCommands simulatedCommands2 = mock(SimulatedCommands.class);
@@ -1238,7 +1245,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
@@ -1335,7 +1342,7 @@ public class DataNetworkTest extends TelephonyTest {
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
// Data disabled
doReturn(false).when(mDataSettingsManager).isDataEnabled();
@@ -1371,14 +1378,14 @@ public class DataNetworkTest extends TelephonyTest {
@Test
public void testRestrictedNetworkDataRoamingEnabled() throws Exception {
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
+ NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING, false/*isNtn*/);
NetworkRequestList networkRequestList = new NetworkRequestList();
// Restricted network request
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
// Data roaming disabled
doReturn(false).when(mDataSettingsManager).isDataRoamingEnabled();
@@ -1516,7 +1523,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
mDataServiceManagers, mInternetDataProfile, networkRequestList,
AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
@@ -1620,7 +1627,7 @@ public class DataNetworkTest extends TelephonyTest {
LteVopsSupportInfo.LTE_STATUS_SUPPORTED))
.build();
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri);
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri, false/*isNtn*/);
assertThat(mDataNetworkUT.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_MMTEL)).isTrue();
@@ -1634,7 +1641,7 @@ public class DataNetworkTest extends TelephonyTest {
.build();
logd("Trigger non VoPS");
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri);
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri, false/*isNtn*/);
// MMTEL should not be removed.
assertThat(mDataNetworkUT.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_MMTEL)).isTrue();
@@ -1651,7 +1658,7 @@ public class DataNetworkTest extends TelephonyTest {
LteVopsSupportInfo.LTE_STATUS_SUPPORTED))
.build();
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri);
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri, false/*isNtn*/);
assertThat(mDataNetworkUT.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_MMTEL)).isTrue();
@@ -1665,7 +1672,7 @@ public class DataNetworkTest extends TelephonyTest {
.build();
logd("Trigger non VoPS");
serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri);
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, dsri, false/*isNtn*/);
// MMTEL should be removed to reflect the actual Vops status.
assertThat(mDataNetworkUT.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_MMTEL)).isFalse();
@@ -1724,7 +1731,7 @@ public class DataNetworkTest extends TelephonyTest {
TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder().addCapability(
- NetworkCapabilities.NET_CAPABILITY_SUPL).build(), mPhone);
+ NetworkCapabilities.NET_CAPABILITY_SUPL).build(), mPhone, mFeatureFlags);
mDataNetworkUT.attachNetworkRequests(new NetworkRequestList(networkRequest));
processAllMessages();
@@ -1747,7 +1754,7 @@ public class DataNetworkTest extends TelephonyTest {
TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder().addCapability(
- NetworkCapabilities.NET_CAPABILITY_SUPL).build(), mPhone);
+ NetworkCapabilities.NET_CAPABILITY_SUPL).build(), mPhone, mFeatureFlags);
mDataNetworkUT.attachNetworkRequests(new NetworkRequestList(networkRequest));
processAllMessages();
@@ -1900,7 +1907,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
mDataServiceManagers, mInternetDataProfile, networkRequestList,
@@ -2044,7 +2051,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
mDataServiceManagers, m5gDataProfile, networkRequestList,
AccessNetworkConstants.TRANSPORT_TYPE_WWAN, DataAllowedReason.NORMAL,
@@ -2141,7 +2148,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequest.Builder builder = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
builder.addCapability(NetworkCapabilities.NET_CAPABILITY_MMTEL);
- networkRequestList.add(new TelephonyNetworkRequest(builder.build(), mPhone));
+ networkRequestList.add(new TelephonyNetworkRequest(builder.build(), mPhone, mFeatureFlags));
mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
mDataServiceManagers, mImsDataProfile, networkRequestList,
AccessNetworkConstants.TRANSPORT_TYPE_WLAN,
@@ -2248,7 +2255,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequestList networkRequestList = new NetworkRequestList();
networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone));
+ .build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(mMockedWlanDataServiceManager, 123);
mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
mDataServiceManagers, mImsDataProfile, networkRequestList,
@@ -2264,7 +2271,7 @@ public class DataNetworkTest extends TelephonyTest {
NetworkRequest.Builder builder = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
if (isMmtel) builder.addCapability(NetworkCapabilities.NET_CAPABILITY_MMTEL);
- networkRequestList.add(new TelephonyNetworkRequest(builder.build(), mPhone));
+ networkRequestList.add(new TelephonyNetworkRequest(builder.build(), mPhone, mFeatureFlags));
setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
@@ -2277,6 +2284,37 @@ public class DataNetworkTest extends TelephonyTest {
processAllMessages();
}
+ private void setupNonTerrestrialDataNetwork() {
+ NetworkRequestList networkRequestList = new NetworkRequestList();
+
+ networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
+ .addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
+ .build(), mPhone, mFeatureFlags));
+ setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
+
+ mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
+ mDataServiceManagers, mInternetDataProfile, networkRequestList,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ DataAllowedReason.NORMAL, mDataNetworkCallback);
+ processAllMessages();
+ }
+
+ private void setupTerrestrialDataNetwork() {
+ NetworkRequestList networkRequestList = new NetworkRequestList();
+ networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .build(), mPhone, mFeatureFlags));
+ setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
+
+ mDataNetworkUT = new DataNetwork(mPhone, mFeatureFlags, Looper.myLooper(),
+ mDataServiceManagers, mInternetDataProfile, networkRequestList,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ DataAllowedReason.NORMAL, mDataNetworkCallback);
+ processAllMessages();
+ }
+
@Test
public void testMmsCapabilityRemovedWhenMmsPreferredOnIwlan() throws Exception {
doReturn(true).when(mFeatureFlags).forceIwlanMms();
@@ -2355,4 +2393,104 @@ public class DataNetworkTest extends TelephonyTest {
verify(mDataNetworkCallback).onQosSessionsChanged(newQosSessions);
}
+
+ @Test
+ public void testIsTransportSatelliteSupportNonImsNonTerrestrialNetwork() throws Exception {
+ // Service state at Non-terrestrial network
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, true/*isNtn*/);
+
+ // set up data network with transport type satellite + Internet
+ setupNonTerrestrialDataNetwork();
+
+ //Check now transport type for the data network is satellite
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE)).isTrue();
+ }
+
+ @Test
+ public void testIsTransportSatelliteSupportWithImsNonTerrestrialNetwork() throws Exception {
+ // Service state at Non-terrestrial network
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, true/*isNtn*/);
+
+ // set up data network with transport type satellite + IMS
+ createImsDataNetwork(false/*isMmtel*/);
+
+ //Check transport type for the data network is Cellular for Ims at non-terrestrial network
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue();
+ }
+
+ @Test
+ public void testSatelliteTransportSupportedNonImsTerrestrialToNonTerrestrial()
+ throws Exception {
+ // Service state at terrestrial network
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, false/*isNtn*/);
+
+ // set up data network with transport type cellular + Internet
+ setupTerrestrialDataNetwork();
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue();
+
+ // Service State change terrestrial to non-terrestrial
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, true/*isNtn*/);
+
+ // Make sure transport type for the data network is still Cellular
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue();
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE)).isFalse();
+
+ // Disconnect the Data call
+ mDataNetworkUT.sendMessage(19/*EVENT_DEACTIVATE_DATA_NETWORK_RESPONSE*/, 0/*Success*/);
+ processAllMessages();
+
+ // set up data network with transport type satellite + Internet
+ setupNonTerrestrialDataNetwork();
+
+ //Check now transport type for the data network is satellite
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE)).isTrue();
+ }
+
+ @Test
+ public void testSatelliteTransportSupportedNonImsNonTerrestrialToTerrestrial()
+ throws Exception {
+ // Service state at non-terrestrial network
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, true/*isNtn*/);
+
+ // set up data network with transport type satellite + Internet
+ setupNonTerrestrialDataNetwork();
+
+ //Check now transport type for the data network is satellite
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE)).isTrue();
+
+ // Service State change non-terrestrial to terrestrial
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME, false/*isNtn*/);
+
+ // Make sure transport type for the data network is still satellite
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE)).isTrue();
+
+ // Make sure transport type for the data network is not cellular
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isFalse();
+
+ // Disconnect the Data call
+ mDataNetworkUT.sendMessage(19/*EVENT_DEACTIVATE_DATA_NETWORK_RESPONSE*/, 0/*Success*/);
+ processAllMessages();
+
+ // set up data network with transport type cellular + Internet
+ setupTerrestrialDataNetwork();
+
+ //Check now transport type for the data network is cellular
+ assertThat(mDataNetworkUT.getNetworkCapabilities()
+ .hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue();
+ }
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java
index 44d207de63..3d6b4f4d79 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java
@@ -888,7 +888,7 @@ public class DataProfileManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataProfile dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
@@ -899,7 +899,7 @@ public class DataProfileManagerTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)
.build();
- tnr = new TelephonyNetworkRequest(request, mPhone);
+ tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
@@ -909,7 +909,7 @@ public class DataProfileManagerTest extends TelephonyTest {
request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
.build();
- tnr = new TelephonyNetworkRequest(request, mPhone);
+ tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dp.canSatisfy(tnr.getCapabilities())).isTrue();
@@ -918,7 +918,7 @@ public class DataProfileManagerTest extends TelephonyTest {
request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN)
.build();
- tnr = new TelephonyNetworkRequest(request, mPhone);
+ tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dp).isNull();
@@ -931,7 +931,7 @@ public class DataProfileManagerTest extends TelephonyTest {
request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN)
.build();
- tnr = new TelephonyNetworkRequest(request, mPhone);
+ tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_NR, false, false , false);
assertThat(dp.canSatisfy(tnr.getCapabilities())).isTrue();
@@ -943,7 +943,7 @@ public class DataProfileManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataProfile dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_GSM, false, false, false);
// Should not find data profile due to RAT incompatible.
@@ -955,7 +955,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN);
@@ -973,7 +973,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting()).isNull();
@@ -986,7 +986,7 @@ public class DataProfileManagerTest extends TelephonyTest {
tnr = new TelephonyNetworkRequest(new NetworkRequest(new NetworkCapabilities()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.addEnterpriseId(2), ConnectivityManager.TYPE_NONE,
- 0, NetworkRequest.Type.REQUEST), mPhone);
+ 0, NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting()).isNull();
@@ -1002,7 +1002,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting()).isNull();
@@ -1018,7 +1018,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting()).isNull();
@@ -1036,7 +1036,7 @@ public class DataProfileManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataProfile dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, true, false, false);
@@ -1050,7 +1050,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN);
@@ -1090,7 +1090,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest dunTnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dunDataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
dunTnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
DataNetwork dunInternetNetwork = Mockito.mock(DataNetwork.class);
@@ -1189,7 +1189,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile).isNull();
@@ -1198,7 +1198,7 @@ public class DataProfileManagerTest extends TelephonyTest {
tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo("sos");
@@ -1207,7 +1207,7 @@ public class DataProfileManagerTest extends TelephonyTest {
tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile).isEqualTo(null);
@@ -1237,7 +1237,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile).isNull();
@@ -1246,7 +1246,7 @@ public class DataProfileManagerTest extends TelephonyTest {
tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo("sos");
@@ -1255,7 +1255,7 @@ public class DataProfileManagerTest extends TelephonyTest {
tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile).isEqualTo(null);
@@ -1291,7 +1291,7 @@ public class DataProfileManagerTest extends TelephonyTest {
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone),
+ .build(), mPhone, mFeatureFlags),
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(IMS_APN);
}
@@ -1301,7 +1301,7 @@ public class DataProfileManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
// This should get the merged data profile after deduping.
DataProfile dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
@@ -1439,7 +1439,7 @@ public class DataProfileManagerTest extends TelephonyTest {
public void testDefaultEmergencyDataProfileValid() {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
@@ -1456,7 +1456,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN);
@@ -1522,7 +1522,7 @@ public class DataProfileManagerTest extends TelephonyTest {
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
changeSimStateTo(TelephonyManager.SIM_STATE_LOADED);
mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget();
processAllMessages();
@@ -1828,7 +1828,7 @@ public class DataProfileManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataProfile dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
@@ -1852,7 +1852,7 @@ public class DataProfileManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataProfile dp = mDataProfileManagerUT.getDataProfileForNetworkRequest(tnr,
TelephonyManager.NETWORK_TYPE_LTE, false, false, false);
@@ -1883,7 +1883,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// Verify the we can get the previously permanent failed data profile again.
assertThat(mDataProfileManagerUT.getDataProfileForNetworkRequest(
- new TelephonyNetworkRequest(request, mPhone),
+ new TelephonyNetworkRequest(request, mPhone, mFeatureFlags),
TelephonyManager.NETWORK_TYPE_LTE, false, false, false))
.isNotNull();
}
@@ -1902,7 +1902,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// flag is enabled at data profile, during esim bootstrap provisioning
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, true, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(
@@ -1912,7 +1912,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// is enabled at data profile, during esim bootstrap provisioning
tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, true, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo("IMS_APN");
@@ -1921,7 +1921,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// is disabled at data profile, during esim bootstrap provisioning
tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, true, false);
assertThat(dataProfile).isEqualTo(null);
@@ -1930,7 +1930,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// is disabled at data profile, during esim bootstrap provisioning
tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, true, false);
assertThat(dataProfile).isEqualTo(null);
@@ -1950,7 +1950,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// type
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, false, true, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(
@@ -1972,7 +1972,7 @@ public class DataProfileManagerTest extends TelephonyTest {
// type
TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
tnr, TelephonyManager.NETWORK_TYPE_LTE, true, true, false);
assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(RCS_APN1);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataRetryManagerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataRetryManagerTest.java
index 2541bd1993..c413f838af 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataRetryManagerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataRetryManagerTest.java
@@ -292,7 +292,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
mDataRetryManagerUT.evaluateDataSetupRetry(mDataProfile1,
@@ -316,7 +316,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
mDataRetryManagerUT.evaluateDataSetupRetry(mDataProfile3,
@@ -345,7 +345,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
mDataRetryManagerUT.evaluateDataSetupRetry(mDataProfile3,
@@ -432,7 +432,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
@@ -535,7 +535,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
mDataRetryManagerUT.evaluateDataSetupRetry(mDataProfile1,
@@ -568,7 +568,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
@@ -647,7 +647,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
@@ -709,7 +709,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
@@ -798,7 +798,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
mDataRetryManagerUT.evaluateDataSetupRetry(mDataProfile1,
@@ -839,7 +839,7 @@ public class DataRetryManagerTest extends TelephonyTest {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
- TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone);
+ TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(request, mPhone, mFeatureFlags);
DataNetworkController.NetworkRequestList
networkRequestList = new DataNetworkController.NetworkRequestList(tnr);
@@ -853,7 +853,7 @@ public class DataRetryManagerTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(mDataRetryManagerUT.isSimilarNetworkRequestRetryScheduled(tnr,
AccessNetworkConstants.TRANSPORT_TYPE_WWAN)).isTrue();
assertThat(mDataRetryManagerUT.isSimilarNetworkRequestRetryScheduled(tnr,
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java
index ea8a7d7966..663cd512ca 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java
@@ -18,24 +18,32 @@ package com.android.internal.telephony.data;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.data.DataNetworkController.NetworkRequestList;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import java.util.List;
public class DataUtilsTest extends TelephonyTest {
+ private FeatureFlags mFeatureFlags;
+
@Before
public void setUp() throws Exception {
logd("DataUtilsTest +Setup!");
super.setUp(getClass().getSimpleName());
+ mFeatureFlags = Mockito.mock(FeatureFlags.class);
+ doReturn(true).when(mFeatureFlags).carrierEnabledSatelliteFlag();
logd("DataUtilsTest -Setup!");
}
@@ -57,10 +65,13 @@ public class DataUtilsTest extends TelephonyTest {
NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
+ NetworkCapabilities.NET_CAPABILITY_IMS,
+ NetworkCapabilities.NET_CAPABILITY_IMS,
};
int requestId = 0;
int enterpriseId = 1;
+ int transportType = NetworkCapabilities.TRANSPORT_CELLULAR;
TelephonyNetworkRequest networkRequest;
for (int netCap : netCaps) {
if (netCap == NetworkCapabilities.NET_CAPABILITY_ENTERPRISE) {
@@ -69,24 +80,31 @@ public class DataUtilsTest extends TelephonyTest {
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.addEnterpriseId(enterpriseId).build(), -1, requestId++,
- NetworkRequest.Type.REQUEST), mPhone);
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
if (enterpriseId == 1) enterpriseId++;
+ } else if (netCap == NetworkCapabilities.NET_CAPABILITY_IMS) {
+ networkRequest = new TelephonyNetworkRequest(new NetworkRequest(
+ new NetworkCapabilities.Builder()
+ .addTransportType(transportType)
+ .addCapability(netCap).build(), -1, requestId++,
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
+ transportType = NetworkCapabilities.TRANSPORT_SATELLITE;
} else {
networkRequest = new TelephonyNetworkRequest(new NetworkRequest(
new NetworkCapabilities.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addCapability(netCap).build(), -1, requestId++,
- NetworkRequest.Type.REQUEST), mPhone);
+ NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
}
requestList.add(networkRequest);
}
- assertThat(requestList).hasSize(8);
+ assertThat(requestList).hasSize(10);
List<NetworkRequestList> requestListList =
- DataUtils.getGroupedNetworkRequestList(requestList);
+ DataUtils.getGroupedNetworkRequestList(requestList, mFeatureFlags);
- assertThat(requestListList).hasSize(5);
+ assertThat(requestListList).hasSize(7);
requestList = requestListList.get(0);
assertThat(requestList).hasSize(1);
assertThat(requestList.get(0).hasCapability(
@@ -100,26 +118,40 @@ public class DataUtilsTest extends TelephonyTest {
NetworkCapabilities.NET_CAPABILITY_MMS)).isTrue();
requestList = requestListList.get(2);
+ assertThat(requestList).hasSize(1);
+ assertThat(requestList.get(0).hasCapability(
+ NetworkCapabilities.NET_CAPABILITY_IMS)).isTrue();
+ assertThat(requestList.get(0).getNativeNetworkRequest().hasTransport(
+ NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue();
+
+ requestList = requestListList.get(3);
+ assertThat(requestList).hasSize(1);
+ assertThat(requestList.get(0).hasCapability(
+ NetworkCapabilities.NET_CAPABILITY_IMS)).isTrue();
+ assertThat(requestList.get(0).getNativeNetworkRequest().hasTransport(
+ NetworkCapabilities.TRANSPORT_SATELLITE)).isTrue();
+
+ requestList = requestListList.get(4);
assertThat(requestList).hasSize(2);
assertThat(requestList.get(0).hasCapability(
NetworkCapabilities.NET_CAPABILITY_INTERNET)).isTrue();
assertThat(requestList.get(1).hasCapability(
NetworkCapabilities.NET_CAPABILITY_INTERNET)).isTrue();
- requestList = requestListList.get(3);
+ requestList = requestListList.get(5);
assertThat(requestList).hasSize(1);
assertThat(requestList.get(0).hasCapability(
NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
- assertThat(requestList.get(0).getCapabilityDifferentiator() == 1).isTrue();
+ assertThat(requestList.get(0).getCapabilityDifferentiator()).isEqualTo(1);
- requestList = requestListList.get(4);
+ requestList = requestListList.get(6);
assertThat(requestList).hasSize(2);
assertThat(requestList.get(0).hasCapability(
NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
- assertThat(requestList.get(0).getCapabilityDifferentiator() == 2).isTrue();
+ assertThat(requestList.get(0).getCapabilityDifferentiator()).isEqualTo(2);
assertThat(requestList.get(1).hasCapability(
NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
- assertThat(requestList.get(1).getCapabilityDifferentiator() == 2).isTrue();
+ assertThat(requestList.get(1).getCapabilityDifferentiator()).isEqualTo(2);
}
@Test
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java
index e011a60d7f..1f9ace9bb1 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java
@@ -221,8 +221,8 @@ public class PhoneSwitcherTest extends TelephonyTest {
NetworkRequest internetNetworkRequest = addInternetNetworkRequest(null, 50);
assertFalse("phone active after request", mPhoneSwitcherUT
- .shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetNetworkRequest, mPhone), 0));
+ .shouldApplyNetworkRequest(new TelephonyNetworkRequest(
+ internetNetworkRequest, mPhone, mFeatureFlags), 0));
// not registered yet - shouldn't inc
verify(mActivePhoneSwitchHandler, never()).sendMessageAtTime(any(), anyLong());
@@ -628,9 +628,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
// Phone 0 (sub 1) should be activated as it has default data sub.
assertEquals(1, mPhoneSwitcherUT.getActiveDataSubId());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
// Set sub 2 as preferred sub should make phone 1 activated and phone 0 deactivated.
mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, false, null);
@@ -645,9 +645,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
// switch shouldn't occur due to the higher priority event
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertEquals(1, mPhoneSwitcherUT.getActiveDataSubId());
assertEquals(2, mPhoneSwitcherUT.getAutoSelectedDataSubId());
@@ -657,9 +657,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
assertEquals(2, mPhoneSwitcherUT.getActiveDataSubId());
assertEquals(2, mPhoneSwitcherUT.getAutoSelectedDataSubId());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
}
@Test
@@ -751,13 +751,13 @@ public class PhoneSwitcherTest extends TelephonyTest {
verify(mMockRadioConfig, never()).setPreferredDataModem(anyInt(), any());
verify(mActivePhoneSwitchHandler, never()).sendMessageAtTime(any(), anyLong());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(mmsRequest, mPhone), 0));
+ new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(mmsRequest, mPhone), 1));
+ new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 1));
// Set sub 2 as preferred sub should make phone 1 preferredDataModem
doReturn(new SubscriptionInfoInternal.Builder(mSubscriptionManagerService
@@ -773,13 +773,13 @@ public class PhoneSwitcherTest extends TelephonyTest {
processAllMessages();
verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(mmsRequest, mPhone), 0));
+ new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 0));
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(mmsRequest, mPhone), 1));
+ new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 1));
clearInvocations(mMockRadioConfig);
clearInvocations(mActivePhoneSwitchHandler);
@@ -796,13 +796,13 @@ public class PhoneSwitcherTest extends TelephonyTest {
processAllMessages();
verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(mmsRequest, mPhone), 0));
+ new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(mmsRequest, mPhone), 1));
+ new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 1));
// SetDataAllowed should never be triggered.
verify(mCommandsInterface0, never()).setDataAllowed(anyBoolean(), any());
@@ -1038,9 +1038,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
setDefaultDataSubId(1);
NetworkRequest internetRequest = addInternetNetworkRequest(null, 50);
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
clearInvocations(mMockRadioConfig);
setAllPhonesInactive();
// Initialization done.
@@ -1050,18 +1050,18 @@ public class PhoneSwitcherTest extends TelephonyTest {
notifyPhoneAsInCall(mPhone2);
verify(mMockRadioConfig, never()).setPreferredDataModem(anyInt(), any());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
// Phone2 has active call, and data is on. So data switch to it.
doReturn(true).when(mPhone).isUserDataEnabled();
notifyDataEnabled(true);
verify(mMockRadioConfig).setPreferredDataModem(eq(1), any());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
clearInvocations(mMockRadioConfig);
// Phone2(nDDS) call ended. But Phone1 having cross-SIM call. Don't switch.
@@ -1070,9 +1070,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
notifyPhoneAsInactive(mPhone2);
verify(mMockRadioConfig, never()).setPreferredDataModem(anyInt(), any());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
// Phone(DDS) call ended.
// Honor auto data switch's suggestion: if DDS is OOS, auto switch to Phone2(nDDS).
@@ -1083,9 +1083,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
// verify immediately switch back to DDS upon call ends
verify(mMockRadioConfig).setPreferredDataModem(eq(0), any());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
// verify the attempt to do auto data switch to Phone2(nDDS)
processAllFutureMessages();
@@ -1098,9 +1098,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
notifyPhoneAsInHoldingCall(mPhone2);
verify(mMockRadioConfig, never()).setPreferredDataModem(anyInt(), any());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
}
@Test
@@ -1115,9 +1115,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
setDefaultDataSubId(1);
NetworkRequest internetRequest = addInternetNetworkRequest(null, 50);
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
clearInvocations(mMockRadioConfig);
setAllPhonesInactive();
// Initialization done.
@@ -1127,17 +1127,17 @@ public class PhoneSwitcherTest extends TelephonyTest {
notifyPhoneAsInCall(mPhone2);
verify(mMockRadioConfig).setPreferredDataModem(eq(1), any());
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
// During the active call, user turns off data, should immediately switch back to DDS
notifyDataEnabled(false);
verify(mMockRadioConfig).setPreferredDataModem(eq(0), any());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
}
@Test
@@ -1165,16 +1165,16 @@ public class PhoneSwitcherTest extends TelephonyTest {
setDefaultDataSubId(1);
NetworkRequest internetRequest = addInternetNetworkRequest(2, 50);
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
// Restricted network request will should be applied.
internetRequest = addInternetNetworkRequest(2, 50, true);
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
}
@Test
@@ -1558,9 +1558,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
setDefaultDataSubId(1);
NetworkRequest internetRequest = addInternetNetworkRequest(null, 50);
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
clearInvocations(mMockRadioConfig);
setAllPhonesInactive();
// Initialization done.
@@ -1599,9 +1599,9 @@ public class PhoneSwitcherTest extends TelephonyTest {
setDefaultDataSubId(1);
NetworkRequest internetRequest = addInternetNetworkRequest(null, 50);
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 0));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), 1));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 1));
clearInvocations(mMockRadioConfig);
setAllPhonesInactive();
// Initialization done.
@@ -1862,10 +1862,10 @@ public class PhoneSwitcherTest extends TelephonyTest {
if (defaultDataSub == (i + 1)) {
// sub id is always phoneId+1 for testing
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), i));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), i));
} else {
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
- new TelephonyNetworkRequest(internetRequest, mPhone), i));
+ new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), i));
}
}
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java
index ad99eaf9e7..e1a0eac914 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java
@@ -135,7 +135,8 @@ public class TelephonyNetworkFactoryTest extends TelephonyTest {
}
private void activatePhoneInPhoneSwitcher(int phoneId, NetworkRequest nr, boolean active) {
- TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(nr, mPhone);
+ TelephonyNetworkRequest networkRequest =
+ new TelephonyNetworkRequest(nr, mPhone, mFeatureFlags);
doReturn(active).when(mPhoneSwitcher).shouldApplyNetworkRequest(
eq(networkRequest), eq(phoneId));
mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkRequestTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkRequestTest.java
index 26a9fde815..3c8bfe53b1 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkRequestTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkRequestTest.java
@@ -18,6 +18,9 @@ package com.android.internal.telephony.data;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
@@ -123,7 +126,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
TelephonyNetworkRequest internetRequest =
- new TelephonyNetworkRequest(nativeRequest, mPhone);
+ new TelephonyNetworkRequest(nativeRequest, mPhone, mFeatureFlags);
assertThat(internetRequest.getNativeNetworkRequest()).isEqualTo(nativeRequest);
}
@@ -132,11 +135,11 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest internetRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest imsRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(internetRequest.getPriority()).isEqualTo(20);
assertThat(imsRequest.getPriority()).isEqualTo(40);
@@ -152,7 +155,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.setNetworkSpecifier(telephonyNetworkSpecifier)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(internetRequest.getNetworkSpecifier()).isEqualTo(telephonyNetworkSpecifier);
}
@@ -164,7 +167,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(internetRequest.getCapabilities()).isEqualTo(
new int[]{NetworkCapabilities.NET_CAPABILITY_INTERNET,
NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED,
@@ -191,7 +194,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(request.getApnTypeNetworkCapability())
.isEqualTo(NetworkCapabilities.NET_CAPABILITY_SUPL);
@@ -200,7 +203,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(request.getApnTypeNetworkCapability())
.isEqualTo(NetworkCapabilities.NET_CAPABILITY_FOTA);
@@ -209,7 +212,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
assertThat(request.getApnTypeNetworkCapability())
.isEqualTo(NetworkCapabilities.NET_CAPABILITY_EIMS);
}
@@ -219,7 +222,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest internetRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
NetworkCapabilities caps = new NetworkCapabilities.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
@@ -233,7 +236,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest rcsRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
caps = new NetworkCapabilities.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
@@ -250,15 +253,15 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest internetRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest mmsRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest rcsRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile internetDataProfile = new DataProfile.Builder()
.setApnSetting(INTERNET_APN_SETTING)
.build();
@@ -281,12 +284,12 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest enterpriseRequest1 = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest enterpriseRequest2 = new TelephonyNetworkRequest(
new NetworkRequest(new NetworkCapabilities()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.addEnterpriseId(2), ConnectivityManager.TYPE_NONE,
- 0, NetworkRequest.Type.REQUEST), mPhone);
+ 0, NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
DataProfile enterpriseDataProfile1 = new DataProfile.Builder()
.setTrafficDescriptor(new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -309,18 +312,18 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest enterpriseRequest2 = new TelephonyNetworkRequest(
new NetworkRequest(new NetworkCapabilities()
.addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addEnterpriseId(2), ConnectivityManager.TYPE_NONE,
- 0, NetworkRequest.Type.REQUEST), mPhone);
+ 0, NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
TelephonyNetworkRequest internetRequest = new TelephonyNetworkRequest(
new NetworkRequest(new NetworkCapabilities()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET),
ConnectivityManager.TYPE_NONE,
- 0, NetworkRequest.Type.REQUEST), mPhone);
+ 0, NetworkRequest.Type.REQUEST), mPhone, mFeatureFlags);
DataProfile enterpriseDataProfile = new DataProfile.Builder()
.setApnSetting(ENTERPRISE_APN_SETTING)
@@ -342,12 +345,12 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest urllcRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest embbRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile urllcDataProfile = new DataProfile.Builder()
.setTrafficDescriptor(new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -364,12 +367,12 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest urllcRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest embbRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile embbDataProfile = new DataProfile.Builder()
.setTrafficDescriptor(new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -386,12 +389,12 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
TelephonyNetworkRequest cbsRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
TelephonyNetworkRequest embbRequest = new TelephonyNetworkRequest(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
- .build(), mPhone);
+ .build(), mPhone, mFeatureFlags);
DataProfile cbsDataProfile = new DataProfile.Builder()
.setTrafficDescriptor(new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
@@ -402,4 +405,92 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
assertThat(cbsRequest.canBeSatisfiedBy(cbsDataProfile)).isTrue();
assertThat(embbRequest.canBeSatisfiedBy(cbsDataProfile)).isFalse();
}
+
+ @Test
+ public void testSatelliteNetworkRequest() {
+ when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
+ TelephonyNetworkRequest satelliteRequest = new TelephonyNetworkRequest(
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE)
+ .build(), mPhone, mFeatureFlags);
+
+ TelephonyNetworkRequest generalRequest = new TelephonyNetworkRequest(
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .build(), mPhone, mFeatureFlags);
+
+ ApnSetting satelliteInternetApn = new ApnSetting.Builder()
+ .setEntryName("apn")
+ .setApnName("apn")
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setCarrierEnabled(true)
+ .setInfrastructureBitmask(ApnSetting.INFRASTRUCTURE_SATELLITE)
+ .build();
+
+ ApnSetting cellularInternetApn = new ApnSetting.Builder()
+ .setEntryName("apn")
+ .setApnName("apn")
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setCarrierEnabled(true)
+ .setInfrastructureBitmask(ApnSetting.INFRASTRUCTURE_CELLULAR)
+ .build();
+
+ DataProfile satelliteInternetDataProfile = new DataProfile.Builder()
+ .setApnSetting(satelliteInternetApn)
+ .build();
+
+ DataProfile cellularInternetDataProfile = new DataProfile.Builder()
+ .setApnSetting(cellularInternetApn)
+ .build();
+
+ assertThat(satelliteRequest.canBeSatisfiedBy(satelliteInternetDataProfile)).isTrue();
+ assertThat(generalRequest.canBeSatisfiedBy(satelliteInternetDataProfile)).isTrue();
+ assertThat(satelliteRequest.canBeSatisfiedBy(cellularInternetDataProfile)).isFalse();
+ assertThat(generalRequest.canBeSatisfiedBy(cellularInternetDataProfile)).isTrue();
+ }
+
+ @Test
+ public void testCellularNetworkRequest() {
+ doReturn(true).when(mFeatureFlags).carrierEnabledSatelliteFlag();
+ TelephonyNetworkRequest cellularRequest = new TelephonyNetworkRequest(
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
+ .build(), mPhone, mFeatureFlags);
+
+ TelephonyNetworkRequest generalRequest = new TelephonyNetworkRequest(
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .build(), mPhone, mFeatureFlags);
+
+ ApnSetting satelliteInternetApn = new ApnSetting.Builder()
+ .setEntryName("apn")
+ .setApnName("apn")
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setCarrierEnabled(true)
+ .setInfrastructureBitmask(ApnSetting.INFRASTRUCTURE_SATELLITE)
+ .build();
+
+ ApnSetting cellularInternetApn = new ApnSetting.Builder()
+ .setEntryName("apn")
+ .setApnName("apn")
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setCarrierEnabled(true)
+ .setInfrastructureBitmask(ApnSetting.INFRASTRUCTURE_CELLULAR)
+ .build();
+
+ DataProfile satelliteInternetDataProfile = new DataProfile.Builder()
+ .setApnSetting(satelliteInternetApn)
+ .build();
+
+ DataProfile cellularInternetDataProfile = new DataProfile.Builder()
+ .setApnSetting(cellularInternetApn)
+ .build();
+
+ assertThat(cellularRequest.canBeSatisfiedBy(satelliteInternetDataProfile)).isFalse();
+ assertThat(generalRequest.canBeSatisfiedBy(satelliteInternetDataProfile)).isTrue();
+ assertThat(cellularRequest.canBeSatisfiedBy(cellularInternetDataProfile)).isTrue();
+ assertThat(generalRequest.canBeSatisfiedBy(cellularInternetDataProfile)).isTrue();
+ }
}