diff options
Diffstat (limited to 'src/java/com/android/internal/telephony/data/DataNetwork.java')
-rw-r--r-- | src/java/com/android/internal/telephony/data/DataNetwork.java | 28 |
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() { |