diff options
author | 2025-03-20 20:20:40 +0000 | |
---|---|---|
committer | 2025-03-21 01:16:05 +0000 | |
commit | 01e0245fab39374506675cc481697464c480be7a (patch) | |
tree | 03765ff9ffdc1fec4360994a1b6a4f641e904a25 | |
parent | affac042eb60e249d4cbb496b971dbd0e352314b (diff) |
Return highest preferred data policy if input plmn is empty.
Bug: 404629211
Test: atest SatelliteControllerTest
Flag: EXEMPT bugfix
Change-Id: I14feb99ef015ce0aae17353ffe49f8cad21108b7
-rw-r--r-- | src/java/com/android/internal/telephony/satellite/SatelliteController.java | 33 | ||||
-rw-r--r-- | tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java | 22 |
2 files changed, 48 insertions, 7 deletions
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java index 0d6a2250a7..672a064549 100644 --- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java +++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java @@ -9195,23 +9195,42 @@ public class SatelliteController extends Handler { * @return Supported modes {@link CarrierConfigManager.SATELLITE_DATA_SUPPORT_MODE} */ public int getSatelliteDataServicePolicyForPlmn(int subId, String plmn) { - if (plmn != null && isValidSubscriptionId(subId)) { + plogd("getSatelliteDataServicePolicyForPlmn: subId=" + subId + " plmn=" + plmn); + if (isValidSubscriptionId(subId)) { + Map<String, Integer> dataServicePolicy; synchronized (mSupportedSatelliteServicesLock) { - Map<String, Integer> dataServicePolicy = - mEntitlementDataServicePolicyMapPerCarrier.get( - subId); - logd("data policy available for sub id:" + dataServicePolicy); - if (dataServicePolicy != null && dataServicePolicy.containsKey(plmn) - && !plmn.isEmpty()) { + dataServicePolicy = mEntitlementDataServicePolicyMapPerCarrier.get(subId); + } + plogd("getSatelliteDataServicePolicyForPlmn: dataServicePolicy=" + dataServicePolicy); + + if (dataServicePolicy != null) { + if (!TextUtils.isEmpty(plmn) && dataServicePolicy.containsKey(plmn)) { + plogd("getSatelliteDataServicePolicyForPlmn: " + + "return policy using dataServicePolicy map"); return dataServicePolicy.get(plmn); + } else if (TextUtils.isEmpty(plmn)) { + int preferredPolicy = + CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED; + for (String plmnKey : dataServicePolicy.keySet()) { + int policy = dataServicePolicy.get(plmnKey); + // higher value has higher preference + if (policy > preferredPolicy) { + preferredPolicy = policy; + } + } + plogd("getSatelliteDataServicePolicyForPlmn: " + + "return preferredPolicy=" + preferredPolicy); + return preferredPolicy; } } if (isSatelliteDataServicesAllowed(subId, plmn)) { + plogd("getSatelliteDataServicePolicyForPlmn: return data support mode from config"); return getCarrierSatelliteDataSupportedModeFromConfig(subId); } } + plogd("getSatelliteDataServicePolicyForPlmn: return data support only restricted"); return CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED; } diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java index bc50894257..a519067e78 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java @@ -6593,6 +6593,13 @@ public class SatelliteControllerTest extends TelephonyTest { .getSatelliteDataServicePolicyForPlmn(SUB_ID, "00102"); assertEquals(SATELLITE_DATA_SUPPORT_ALL, dataSupportModeForPlmn); + dataSupportModeForPlmn = mSatelliteControllerUT + .getSatelliteDataServicePolicyForPlmn(SUB_ID, ""); + assertEquals(SATELLITE_DATA_SUPPORT_ALL, dataSupportModeForPlmn); + + dataSupportModeForPlmn = mSatelliteControllerUT + .getSatelliteDataServicePolicyForPlmn(SUB_ID, null); + assertEquals(SATELLITE_DATA_SUPPORT_ALL, dataSupportModeForPlmn); } @Test @@ -6626,6 +6633,14 @@ public class SatelliteControllerTest extends TelephonyTest { .getSatelliteDataServicePolicyForPlmn(SUB_ID, "00101"); assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn); + dataSupportModeForPlmn = mSatelliteControllerUT + .getSatelliteDataServicePolicyForPlmn(SUB_ID, ""); + assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn); + + dataSupportModeForPlmn = mSatelliteControllerUT + .getSatelliteDataServicePolicyForPlmn(SUB_ID, null); + assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn); + setConfigData(new ArrayList<>()); PersistableBundle carrierSupportedSatelliteServicesPerProvider = new PersistableBundle(); @@ -6642,6 +6657,13 @@ public class SatelliteControllerTest extends TelephonyTest { .getSatelliteDataServicePolicyForPlmn(SUB_ID, "00101"); assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn); + dataSupportModeForPlmn = mSatelliteControllerUT + .getSatelliteDataServicePolicyForPlmn(SUB_ID, ""); + assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn); + + dataSupportModeForPlmn = mSatelliteControllerUT + .getSatelliteDataServicePolicyForPlmn(SUB_ID, null); + assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn); } @Test |