aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/data/DataNetwork.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/internal/telephony/data/DataNetwork.java')
-rw-r--r--src/java/com/android/internal/telephony/data/DataNetwork.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataNetwork.java b/src/java/com/android/internal/telephony/data/DataNetwork.java
index d533933bf2..6ba251b430 100644
--- a/src/java/com/android/internal/telephony/data/DataNetwork.java
+++ b/src/java/com/android/internal/telephony/data/DataNetwork.java
@@ -664,6 +664,11 @@ public class DataNetwork extends StateMachine {
*/
private @NetworkType int mLastKnownDataNetworkType;
+ /**
+ * The last known roaming state of this data network.
+ */
+ private boolean mLastKnownRoamingState;
+
/** The reason that why setting up this data network is allowed. */
private @NonNull DataAllowedReason mDataAllowedReason;
@@ -923,6 +928,7 @@ public class DataNetwork extends StateMachine {
}
mTransport = transport;
mLastKnownDataNetworkType = getDataNetworkType();
+ mLastKnownRoamingState = mPhone.getServiceState().getDataRoamingFromRegistration();
mDataAllowedReason = dataAllowedReason;
dataProfile.setLastSetupTimestamp(SystemClock.elapsedRealtime());
mAttachedNetworkRequestList.addAll(networkRequestList);
@@ -1136,6 +1142,15 @@ public class DataNetwork extends StateMachine {
if (networkType != TelephonyManager.NETWORK_TYPE_UNKNOWN) {
mLastKnownDataNetworkType = networkType;
}
+ NetworkRegistrationInfo nri =
+ mPhone.getServiceState()
+ .getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ if (nri != null && nri.isInService()) {
+ mLastKnownRoamingState = nri.getNetworkRegistrationState()
+ == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING;
+ }
updateSuspendState();
updateNetworkCapabilities();
break;
@@ -2224,7 +2239,11 @@ public class DataNetwork extends StateMachine {
TrafficDescriptor trafficDescriptor = mDataProfile.getTrafficDescriptor();
final boolean matchAllRuleAllowed = trafficDescriptor == null
- || !TextUtils.isEmpty(trafficDescriptor.getDataNetworkName());
+ || !TextUtils.isEmpty(trafficDescriptor.getDataNetworkName())
+ // Both OsAppId and APN name are null. This helps for modem to handle when we
+ // are on 5G or LTE with URSP support in falling back to default network.
+ || (TextUtils.isEmpty(trafficDescriptor.getDataNetworkName())
+ && trafficDescriptor.getOsAppId() == null);
int accessNetwork = DataUtils.networkTypeToAccessNetworkType(dataNetworkType);
@@ -3391,6 +3410,13 @@ public class DataNetwork extends StateMachine {
}
/**
+ * @return The last known roaming state of this data network.
+ */
+ public boolean getLastKnownRoamingState() {
+ return mLastKnownRoamingState;
+ }
+
+ /**
* @return The PCO data received from the network.
*/
public @NonNull Map<Integer, PcoData> getPcoData() {