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

Commit 14d1646b authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Android (Google) Code Review
Browse files

Merge "Return highest preferred data policy if input plmn is empty." into main

parents df35ff6a 01e0245f
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