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

Commit d5337747 authored by Hyosun Kim's avatar Hyosun Kim Committed by Android (Google) Code Review
Browse files

Merge "The barred PLMN list is added to the all PLMN list and passed to the modem." into 24D1-dev

parents 3988c552 41d3b5bf
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -375,6 +375,9 @@ public class SatelliteController extends Handler {
    /** Key Subscription ID, value : PLMN allowed list from entitlement. */
    @GuardedBy("mSupportedSatelliteServicesLock")
    private SparseArray<List<String>> mEntitlementPlmnListPerCarrier = new SparseArray<>();
    /** Key Subscription ID, value : PLMN barred list from entitlement. */
    @GuardedBy("mSupportedSatelliteServicesLock")
    private SparseArray<List<String>> mEntitlementBarredPlmnListPerCarrier = new SparseArray<>();
    /**
     * Key : Subscription ID, Value : If there is an entitlementPlmnList, use it. Otherwise, use the
     * carrierPlmnList. */
@@ -2746,10 +2749,12 @@ public class SatelliteController extends Handler {
     * @param subId              subId
     * @param entitlementEnabled {@code true} Satellite service enabled
     * @param allowedPlmnList    plmn allowed list to use the satellite service
     * @param barredPlmnList    plmn barred list to pass the modem
     * @param callback           callback for accept
     */
    public void onSatelliteEntitlementStatusUpdated(int subId, boolean entitlementEnabled,
            List<String> allowedPlmnList, @Nullable IIntegerConsumer callback) {
            List<String> allowedPlmnList, List<String> barredPlmnList,
            @Nullable IIntegerConsumer callback) {
        if (!mFeatureFlags.carrierEnabledSatelliteFlag()) {
            return;
        }
@@ -2764,7 +2769,8 @@ public class SatelliteController extends Handler {
        }
        logd("onSatelliteEntitlementStatusUpdated subId=" + subId + " , entitlementEnabled="
                + entitlementEnabled + ", allowedPlmnList=" + (Objects.equals(null, allowedPlmnList)
                ? "" : allowedPlmnList + ""));
                ? "" : allowedPlmnList + ", barredPlmnList=" + (Objects.equals(null,
                barredPlmnList) ? "" : barredPlmnList + "")));

        synchronized (mSupportedSatelliteServicesLock) {
            if (mSatelliteEntitlementStatusPerCarrier.get(subId, false) != entitlementEnabled) {
@@ -2780,6 +2786,7 @@ public class SatelliteController extends Handler {
            mMergedPlmnListPerCarrier.remove(subId);

            mEntitlementPlmnListPerCarrier.put(subId, allowedPlmnList);
            mEntitlementBarredPlmnListPerCarrier.put(subId, barredPlmnList);
            updatePlmnListPerCarrier(subId);
            configureSatellitePlmnForCarrier(subId);
            mSubscriptionManagerService.setSatelliteEntitlementPlmnList(subId, allowedPlmnList);
@@ -3368,10 +3375,12 @@ public class SatelliteController extends Handler {
        synchronized (mSupportedSatelliteServicesLock) {
            List<String> carrierPlmnList = mMergedPlmnListPerCarrier.get(subId,
                    new ArrayList<>()).stream().toList();
            List<String> barredPlmnList = mEntitlementBarredPlmnListPerCarrier.get(subId,
                    new ArrayList<>()).stream().toList();
            int slotId = SubscriptionManager.getSlotIndex(subId);
            mSatelliteModemInterface.setSatellitePlmn(slotId, carrierPlmnList,
                    SatelliteServiceUtils.mergeStrLists(
                            carrierPlmnList, mSatellitePlmnListFromOverlayConfig),
                            carrierPlmnList, mSatellitePlmnListFromOverlayConfig, barredPlmnList),
                    obtainMessage(EVENT_SET_SATELLITE_PLMN_INFO_DONE));
        }
    }
+14 −0
Original line number Diff line number Diff line
@@ -330,6 +330,20 @@ public class SatelliteServiceUtils {
        return mergedStrSet.stream().toList();
    }

    /**
     * Merge three string lists into one such that the result list does not have any duplicate
     * items.
     */
    @NonNull
    public static List<String> mergeStrLists(List<String> strList1, List<String> strList2,
            List<String> strList3) {
        Set<String> mergedStrSet = new HashSet<>();
        mergedStrSet.addAll(strList1);
        mergedStrSet.addAll(strList2);
        mergedStrSet.addAll(strList3);
        return mergedStrSet.stream().toList();
    }

    private static boolean isServiceTypeValid(int serviceType) {
        return (serviceType >= FIRST_SERVICE_TYPE && serviceType <= LAST_SERVICE_TYPE);
    }
+25 −16
Original line number Diff line number Diff line
@@ -2667,7 +2667,7 @@ public class SatelliteControllerTest extends TelephonyTest {
        // Verify call the requestSetSatelliteEnabledForCarrier to enable the satellite when
        // satellite service is enabled by entitlement server.
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, true, new ArrayList<>(),
                mIIntegerConsumer);
                new ArrayList<>(), mIIntegerConsumer);
        processAllMessages();

        assertTrue(waitForIIntegerConsumerResult(1));
@@ -2687,7 +2687,7 @@ public class SatelliteControllerTest extends TelephonyTest {
                .when(mMockSatelliteModemInterface).isSatelliteServiceSupported();
        setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS);
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, new ArrayList<>(),
                mIIntegerConsumer);
                new ArrayList<>(), mIIntegerConsumer);
        processAllMessages();

        assertTrue(waitForIIntegerConsumerResult(1));
@@ -2712,17 +2712,18 @@ public class SatelliteControllerTest extends TelephonyTest {
        mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
                true);

        // If the entitlement plmn list, the carrier plmn list and the overlay config plmn list
        // are empty verify not passing to the modem.
        // If the entitlement plmn list, the carrier plmn list, the overlay config plmn list and
        // the barred plmn list are empty, verify not passing to the modem.
        reset(mMockSatelliteModemInterface);
        List<String> entitlementPlmnList = new ArrayList<>();
        List<String> barredPlmnList = new ArrayList<>();
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false,
                entitlementPlmnList, mIIntegerConsumer);
                entitlementPlmnList, barredPlmnList, mIIntegerConsumer);
        verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled(anyBoolean(),
                anyBoolean(), anyBoolean(), any(Message.class));

        // If the entitlement plmn list and the overlay config plmn list are available and the
        // carrier plmn list is empty verify passing to the modem.
        // carrier plmn list and the barred plmn list are empty, verify passing to the modem.
        reset(mMockSatelliteModemInterface);
        entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "00103"}).toList();
        List<String> mergedPlmnList = entitlementPlmnList;
@@ -2731,10 +2732,10 @@ public class SatelliteControllerTest extends TelephonyTest {
        replaceInstance(SatelliteController.class, "mSatellitePlmnListFromOverlayConfig",
                mSatelliteControllerUT, overlayConfigPlmnList);
        verifyPassingToModemAfterQueryCompleted(entitlementPlmnList, mergedPlmnList,
                overlayConfigPlmnList);
                overlayConfigPlmnList, barredPlmnList);

        // If the entitlement plmn list, the overlay config plmn list and the carrier plmn list
        // are available, verify passing to the modem.
        // are available and the barred plmn list is empty, verify passing to the modem.
        reset(mMockSatelliteModemInterface);
        Map<Integer, Map<String, Set<Integer>>>
                satelliteServicesSupportedByCarriers = new HashMap<>();
@@ -2746,7 +2747,7 @@ public class SatelliteControllerTest extends TelephonyTest {
        replaceInstance(SatelliteController.class, "mSatelliteServicesSupportedByCarriers",
                mSatelliteControllerUT, satelliteServicesSupportedByCarriers);
        verifyPassingToModemAfterQueryCompleted(entitlementPlmnList, mergedPlmnList,
                overlayConfigPlmnList);
                overlayConfigPlmnList, barredPlmnList);

        // If the entitlement plmn list is empty and the overlay config plmn list and the carrier
        // plmn list are available, verify not passing to the modem.
@@ -2754,18 +2755,26 @@ public class SatelliteControllerTest extends TelephonyTest {
        entitlementPlmnList = new ArrayList<>();
        mergedPlmnList = carrierConfigPlmnList;
        verifyPassingToModemAfterQueryCompleted(entitlementPlmnList, mergedPlmnList,
                overlayConfigPlmnList);
                overlayConfigPlmnList, barredPlmnList);

        // If the entitlement plmn list is empty and the overlay config plmn list, the carrier
        // plmn list and the barred plmn list are available, verify passing to the modem.
        reset(mMockSatelliteModemInterface);
        barredPlmnList = Arrays.stream(new String[]{"00105", "00107"}).toList();
        verifyPassingToModemAfterQueryCompleted(entitlementPlmnList, mergedPlmnList,
                overlayConfigPlmnList, barredPlmnList);
    }

    private void verifyPassingToModemAfterQueryCompleted(List<String> entitlementPlmnList,
            List<String> mergedPlmnList, List<String> overlayConfigPlmnList) {
            List<String> mergedPlmnList, List<String> overlayConfigPlmnList,
            List<String> barredPlmnList) {
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false,
                entitlementPlmnList, mIIntegerConsumer);
                entitlementPlmnList, barredPlmnList, mIIntegerConsumer);

        List<String> plmnListPerCarrier = mSatelliteControllerUT.getSatellitePlmnsForCarrier(
                SUB_ID);
        List<String> allSatellitePlmnList = SatelliteServiceUtils.mergeStrLists(
                plmnListPerCarrier, overlayConfigPlmnList);
                plmnListPerCarrier, overlayConfigPlmnList, barredPlmnList);

        assertEquals(mergedPlmnList, plmnListPerCarrier);
        if (overlayConfigPlmnList.isEmpty()) {
@@ -2963,21 +2972,21 @@ public class SatelliteControllerTest extends TelephonyTest {

        // Change SUB_ID's EntitlementStatus to true
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, true, new ArrayList<>(),
                mIIntegerConsumer);
                new ArrayList<>(), mIIntegerConsumer);

        assertEquals(true, satelliteEnabledPerCarrier.get(SUB_ID));
        assertEquals(false, satelliteEnabledPerCarrier.get(SUB_ID1));

        // Change SUB_ID1's EntitlementStatus to true
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID1, true, new ArrayList<>(),
                mIIntegerConsumer);
                new ArrayList<>(), mIIntegerConsumer);

        assertEquals(true, satelliteEnabledPerCarrier.get(SUB_ID));
        assertEquals(true, satelliteEnabledPerCarrier.get(SUB_ID1));

        // Change SUB_ID's EntitlementStatus to false
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, new ArrayList<>(),
                mIIntegerConsumer);
                new ArrayList<>(), mIIntegerConsumer);

        assertEquals(false, satelliteEnabledPerCarrier.get(SUB_ID));
        assertEquals(true, satelliteEnabledPerCarrier.get(SUB_ID1));
+5 −0
Original line number Diff line number Diff line
@@ -105,5 +105,10 @@ public class SatelliteServiceUtilsTest extends TelephonyTest {
        List<String> expectedMergedList = Arrays.asList("1", "2", "3");
        List<String> mergedList = SatelliteServiceUtils.mergeStrLists(l1, l2);
        assertEquals(expectedMergedList, mergedList);

        List<String> l3 = Arrays.asList("2", "3", "4");
        expectedMergedList = Arrays.asList("1", "2", "3", "4");
        mergedList = SatelliteServiceUtils.mergeStrLists(l1, l2, l3);
        assertEquals(expectedMergedList, mergedList);
    }
}