Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01e0245f authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

Return highest preferred data policy if input plmn is empty.

Bug: 404629211
Test: atest SatelliteControllerTest
Flag: EXEMPT bugfix
Change-Id: I14feb99ef015ce0aae17353ffe49f8cad21108b7
parent affac042
Loading
Loading
Loading
Loading
+26 −7
Original line number Diff line number Diff line
@@ -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;
    }

+22 −0
Original line number Diff line number Diff line
@@ -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