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

Commit 41d3b5bf authored by Hyosun Kim's avatar Hyosun Kim
Browse files

The barred PLMN list is added to the all PLMN list and passed to the modem.

Bug: 331711529
Test: atest SatelliteControllerTest, atest SatelliteServiceUtilsTest
Test : manual - entitlement test server app
1. carrier plmn is exist and entitlement status false and allowed and barred plmn list are empty, verify the carrier plmn is the same as the all plmn list pass to modem
2. carrier plmn is exist and entitlement status true and allowed and barred plmn list are exist, verify the allowed and barred plmn list are the same as the all plmn list pass to modem
3. carrier plmn is exist and entitlement status true and allowed plmn list  is exist as [31026, 302820] and barred plmn list is exist as [, 302020] , verify the allowed and barred plmn list are the same as the all plmn list [302820, 31026, 302020] pass to modem
4. carrier plmn is exist and entitlement status true and allowed plmn list  is exist as [31026, 302820] and barred plmn list is exist as [,] , verify the allowed and barred plmn list are the same as the all plmn list [302820, 31026] pass to modem
5. carrier plmn is exist and entitlement status true and allowed plmn list  is exist as [31026, 302820] and barred plmn list is exist as [31017,] , verify the allowed and barred plmn list are the same as the all plmn list [302820, 31026, 31017] pass to modem

Change-Id: I9809133d0d5c069e7a08f1b30ee36ef3d3ee9dc6
parent 388ab1fb
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);
    }
}