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

Commit 24f1bc0a authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13482186 from 0f37f72c to 25Q3-release

Change-Id: Ib4d87beefaf71ac4a7bbca254c1916978a8ae80d
parents 0af4d239 0f37f72c
Loading
Loading
Loading
Loading
+112 −8
Original line number Diff line number Diff line
@@ -6086,6 +6086,57 @@ public class SatelliteController extends Handler {
        }
    }

    @NonNull
    private int getMaxAllowedDataModeDeviceConfigOverlay() {
        int maxAllowedDataMode = CarrierConfigManager.SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED;
        try {
            maxAllowedDataMode =
                    mContext.getResources().getInteger(R.integer.max_allowed_data_mode);
        } catch (Resources.NotFoundException ex) {
            ploge(
                    "getMaxAllowedDataModeDeviceConfigOverlay: max_allowed_data_mode resource not"
                            + " found. ex="
                            + ex);
        }
        logd("getMaxAllowedDataModeDeviceConfigOverlay: " + maxAllowedDataMode);
        return maxAllowedDataMode;
    }

    /**
     * @return An integer representing the maximum allowed data mode. This will be the value from
     *     the configupdater configuration if available and valid, otherwise the value from the
     *     device configuration overlay.
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public int getMaxAllowedDataMode() {
        int maxAllowedDataMode = getMaxAllowedDataModeDeviceConfigOverlay();
        logd("getMaxAllowedDataMode: device config=" + maxAllowedDataMode);

        SatelliteConfig satelliteConfig = getSatelliteConfig();
        if (satelliteConfig == null) {
            logd(
                    "getMaxAllowedDataMode: satelliteConfig is null: "
                            + "return "
                            + maxAllowedDataMode);
            return maxAllowedDataMode;
        }

        if (satelliteConfig.getSatelliteMaxAllowedDataMode() == null) {
            logd(
                    "getMaxAllowedDataMode: getSatelliteMaxAllowedDataMode() is null: "
                            + "return "
                            + maxAllowedDataMode);
            return maxAllowedDataMode;
        }

        maxAllowedDataMode = satelliteConfig.getSatelliteMaxAllowedDataMode();
        logd(
                "getMaxAllowedDataMode: "
                        + "satelliteConfig.getSatelliteMaxAllowedDataMode()="
                        + maxAllowedDataMode);
        return maxAllowedDataMode;
    }

    @NonNull
    private List<String> readSatellitePlmnsFromOverlayConfig() {
        String[] devicePlmns = readStringArrayFromOverlayConfig(
@@ -9741,18 +9792,30 @@ public class SatelliteController extends Handler {

    /**
     * Method to return the current satellite data service policy supported mode for the registered
     * plmn based on entitlement provisioning information. Note: If no information at
     * provisioning is supported this is overridden with operator carrier config information
     * if available satellite services support data else data service policy is marked as
     * restricted.
     * plmn based on entitlement provisioning information. Note: If no information at provisioning
     * is supported this is overridden with operator carrier config information if available
     * satellite services support data else data service policy is marked as restricted. Note that
     * the data service policy is capped at maxAllowedDataMode which is configured by OEMs through
     * {@link R.integer.max_allowed_data_mode} or through {@link SatelliteConfig}
     *
     * @param subId current subscription id
     * @param plmn current registered plmn information
     *
     * @return Supported modes {@link CarrierConfigManager.SATELLITE_DATA_SUPPORT_MODE}
     */
    public int getSatelliteDataServicePolicyForPlmn(int subId, String plmn) {
        plogd("getSatelliteDataServicePolicyForPlmn: subId=" + subId + " plmn=" + plmn);
        int maxAllowedDataMode = getMaxAllowedDataMode();
        plogd("getSatelliteDataServicePolicyForPlmn: maxAllowedDataMode=" + maxAllowedDataMode);

        if (maxAllowedDataMode == CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED) {
            plogd(
                    "maxAllowedDataMode is "
                            + CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED
                            + ", the least possible value. Data service policy cannot go below"
                            + " that. Therefore, returning this");
            return maxAllowedDataMode;
        }

        if (isValidSubscriptionId(subId)) {
            Map<String, Integer> dataServicePolicy;
            synchronized (mSupportedSatelliteServicesLock) {
@@ -9767,6 +9830,18 @@ public class SatelliteController extends Handler {
                if (!TextUtils.isEmpty(plmn) && dataServicePolicy.containsKey(plmn)) {
                    plogd("getSatelliteDataServicePolicyForPlmn: "
                            + "return policy using dataServicePolicy map");
                    if (dataServicePolicy.get(plmn) > maxAllowedDataMode) {
                        plogd(
                                "getSatelliteDataServicePolicyForPlmn: dataServicePolicy shouldn't "
                                        + "be bigger than maxAllowedDataMode: "
                                        + maxAllowedDataMode);
                        return maxAllowedDataMode;
                    }

                    plogd(
                            "getSatelliteDataServicePolicyForPlmn: "
                                    + "return policy using dataServicePolicy map: "
                                    + dataServicePolicy.get(plmn));
                    return dataServicePolicy.get(plmn);
                } else if (TextUtils.isEmpty(plmn)) {
                    int preferredPolicy =
@@ -9786,8 +9861,23 @@ public class SatelliteController extends Handler {
                    // subscription id.
                    if (preferredPolicy
                            > CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED) {
                        plogd("getSatelliteDataServicePolicyForPlmn: "
                                + "return preferredPolicy=" + preferredPolicy);
                        plogd(
                                "getSatelliteDataServicePolicyForPlmn: "
                                        + "preferredPolicy="
                                        + preferredPolicy);

                        if (preferredPolicy > maxAllowedDataMode) {
                            plogd(
                                    "getSatelliteDataServicePolicyForPlmn: preferredPolicy"
                                            + " shouldn't be bigger than maxAllowedDataMode: "
                                            + maxAllowedDataMode);
                            return maxAllowedDataMode;
                        }

                        plogd(
                                "getSatelliteDataServicePolicyForPlmn: "
                                        + "returning preferredPolicy="
                                        + preferredPolicy);
                        return preferredPolicy;
                    }
                }
@@ -9795,7 +9885,21 @@ public class SatelliteController extends Handler {

            if (isSatelliteDataServicesAllowed(subId, plmn)) {
                plogd("getSatelliteDataServicePolicyForPlmn: return data support mode from config");
                return getCarrierSatelliteDataSupportedModeFromConfig(subId);
                int carrierSatelliteDataSupportedMode =
                        getCarrierSatelliteDataSupportedModeFromConfig(subId);
                if (carrierSatelliteDataSupportedMode > maxAllowedDataMode) {
                    plogd(
                            "getSatelliteDataServicePolicyForPlmn:"
                                    + " carrierSatelliteDataSupportedMode shouldn't be bigger than"
                                    + " maxAllowedDataMode: "
                                    + maxAllowedDataMode);
                    return maxAllowedDataMode;
                }
                plogd(
                        "getSatelliteDataServicePolicyForPlmn: return data support mode from"
                                + " config: "
                                + carrierSatelliteDataSupportedMode);
                return carrierSatelliteDataSupportedMode;
            }
        }

+289 −0
Original line number Diff line number Diff line
@@ -4261,6 +4261,50 @@ public class SatelliteControllerTest extends TelephonyTest {
        assertTrue(mSatelliteControllerUT.isFoldable(mContext, foldableDeviceStateList));
    }

    @Test
    public void testGetMaxAllowedDataMode() {
        logd("testGetMaxAllowedDataMode");
        doReturn(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED)
                .when(mResources)
                .getInteger(eq(R.integer.max_allowed_data_mode));

        // case mMockConfigParser is null
        doReturn(null).when(mMockConfigParser).getConfig();
        assertEquals(
                "Check satelliteConfig is null case",
                SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED,
                mSatelliteControllerUT.getMaxAllowedDataMode());

        // case mMockConfig.getSatelliteMaxAllowedDataMode is null
        doReturn(mMockConfig).when(mMockConfigParser).getConfig();
        doReturn(null).when(mMockConfig).getSatelliteMaxAllowedDataMode();
        assertEquals(
                "Check getSatelliteMaxAllowedDataMode() is null case",
                SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED,
                mSatelliteControllerUT.getMaxAllowedDataMode());

        // case mMockConfig.getSatelliteMaxAllowedDataMode is bigger than device config
        doReturn(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED)
                .when(mMockConfig)
                .getSatelliteMaxAllowedDataMode();
        assertEquals(
                "Check satelliteConfig value is 'bandwidth constrained' case",
                SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED,
                mSatelliteControllerUT.getMaxAllowedDataMode());

        // case mMockConfig.getSatelliteMaxAllowedDataMode is smaller than device config
        doReturn(SATELLITE_DATA_SUPPORT_ALL)
                .when(mResources)
                .getInteger(eq(R.integer.max_allowed_data_mode));
        doReturn(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED)
                .when(mMockConfig)
                .getSatelliteMaxAllowedDataMode();
        assertEquals(
                "Check satelliteConfig value should override device config",
                SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED,
                mSatelliteControllerUT.getMaxAllowedDataMode());
    }

    @Test
    public void testTerrestrialNetworkAvailableChangedCallback() {
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
@@ -6613,6 +6657,10 @@ public class SatelliteControllerTest extends TelephonyTest {
    public void testGetSupportedSatelliteDataModeForPlmn_WithEntitlement() throws Exception {
        logd("testGetSupportedSatelliteDataModeForPlmn_WithEntitlement");

        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode, SATELLITE_DATA_SUPPORT_ALL);
        doReturn(SATELLITE_DATA_SUPPORT_ALL).when(mMockConfig).getSatelliteMaxAllowedDataMode();

        replaceInstance(SatelliteController.class, "mMergedPlmnListPerCarrier",
                mSatelliteControllerUT, new SparseArray<>());
        List<String> overlayConfigPlmnList = new ArrayList<>();
@@ -6694,10 +6742,126 @@ public class SatelliteControllerTest extends TelephonyTest {
        assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn);
    }

    @Test
    public void testGetSupportedSatelliteDataModeForPlmn_WithEntitlement_AllMaxAllowedDataMode()
            throws Exception {
        logd("testGetSupportedSatelliteDataModeForPlmn_WithEntitlement_AllMaxAllowedDataMode");

        replaceInstance(
                SatelliteController.class,
                "mMergedPlmnListPerCarrier",
                mSatelliteControllerUT,
                new SparseArray<>());
        List<String> overlayConfigPlmnList = new ArrayList<>();
        replaceInstance(
                SatelliteController.class,
                "mSatellitePlmnListFromOverlayConfig",
                mSatelliteControllerUT,
                overlayConfigPlmnList);
        mCarrierConfigBundle.putBoolean(
                CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true);

        // With Satellite entitlement support bool true with entitlement data service policy map
        mCarrierConfigBundle.putBoolean(
                CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, true);

        List<String> entitlementPlmnList =
                Arrays.stream(new String[] {"00101", "00102", "00103", "00104"}).toList();
        List<String> barredPlmnList = new ArrayList<>();
        Map<String, Integer> dataServicePolicyMap =
                Map.of(
                        "00101", SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED,
                        "00102", SATELLITE_DATA_SUPPORT_ALL);
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(
                SUB_ID,
                false,
                entitlementPlmnList,
                barredPlmnList,
                new HashMap<>(),
                new HashMap<>(),
                dataServicePolicyMap,
                new HashMap<>(),
                mIIntegerConsumer);

        // Cap maxAllowedDataMode to SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED
        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode,
                SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED);
        doReturn(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED)
                .when(mMockConfig)
                .getSatelliteMaxAllowedDataMode();

        int dataSupportModeForPlmn;
        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, "00101");
        assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn);

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, "00102");
        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);

        // Cap maxAllowedDataMode to SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED
        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode,
                SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED);
        doReturn(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED)
                .when(mMockConfig)
                .getSatelliteMaxAllowedDataMode();

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, "00101");
        assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn);

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, "00102");
        assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn);

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, "");
        assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn);

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, null);
        assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn);

        // Cap maxAllowedDataMode to SATELLITE_DATA_SUPPORT_ALL
        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode, SATELLITE_DATA_SUPPORT_ALL);
        doReturn(SATELLITE_DATA_SUPPORT_ALL).when(mMockConfig).getSatelliteMaxAllowedDataMode();

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, "00101");
        assertEquals(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED, dataSupportModeForPlmn);

        dataSupportModeForPlmn =
                mSatelliteControllerUT.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
    public void testGetSupportedSatelliteDataModeForPlmn_WithoutEntitlement() throws Exception {
        logd("testGetSupportedSatelliteDataModeForPlmn_WithoutEntitlement");

        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode, SATELLITE_DATA_SUPPORT_ALL);
        doReturn(SATELLITE_DATA_SUPPORT_ALL).when(mMockConfig).getSatelliteMaxAllowedDataMode();

        replaceInstance(SatelliteController.class, "mMergedPlmnListPerCarrier",
                mSatelliteControllerUT, new SparseArray<>());
        List<String> overlayConfigPlmnList = new ArrayList<>();
@@ -6753,6 +6917,131 @@ public class SatelliteControllerTest extends TelephonyTest {
                .getSatelliteDataServicePolicyForPlmn(SUB_ID, "");
        assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn);

        dataSupportModeForPlmn =
                mSatelliteControllerUT.getSatelliteDataServicePolicyForPlmn(SUB_ID, null);
        assertEquals(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED, dataSupportModeForPlmn);
    }

    @Test
    public void testGetSupportedSatelliteDataModeForPlmn_WithoutEntitlement_AllMaxAllowedDataMode()
            throws Exception {
        logd("testGetSupportedSatelliteDataModeForPlmn_WithoutEntitlement_AllMaxAllowedDataMode");

        replaceInstance(
                SatelliteController.class,
                "mMergedPlmnListPerCarrier",
                mSatelliteControllerUT,
                new SparseArray<>());
        List<String> overlayConfigPlmnList = new ArrayList<>();
        replaceInstance(
                SatelliteController.class,
                "mSatellitePlmnListFromOverlayConfig",
                mSatelliteControllerUT,
                overlayConfigPlmnList);
        mCarrierConfigBundle.putBoolean(
                CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true);

        // Without entitlement
        mCarrierConfigBundle.putBoolean(
                CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, false);

        List<String> entitlementPlmnList =
                Arrays.stream(new String[] {"00101", "00102", "00103", "00104"}).toList();
        List<String> barredPlmnList = new ArrayList<>();
        Map<String, Integer> dataServicePolicyMap = new HashMap<>();
        mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(
                SUB_ID,
                false,
                entitlementPlmnList,
                barredPlmnList,
                new HashMap<>(),
                new HashMap<>(),
                dataServicePolicyMap,
                new HashMap<>(),
                mIIntegerConsumer);

        // when Available satellite services is not configured with data service
        mCarrierConfigBundle.putInt(
                CarrierConfigManager.KEY_SATELLITE_DATA_SUPPORT_MODE_INT,
                SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED);
        int dataSupportModeForPlmn =
                mSatelliteControllerUT.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();
        List<String> carrierConfigPlmnList = List.of("00101");
        carrierSupportedSatelliteServicesPerProvider.putIntArray(
                carrierConfigPlmnList.get(0), new int[] {2, 3, 5});
        mCarrierConfigBundle.putPersistableBundle(
                CarrierConfigManager.KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE,
                carrierSupportedSatelliteServicesPerProvider);
        invokeCarrierConfigChanged();

        // when Available satellite services support data service
        // And maxAllowedDataMode capped to SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED
        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode,
                SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED);
        doReturn(SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED)
                .when(mMockConfig)
                .getSatelliteMaxAllowedDataMode();

        dataSupportModeForPlmn =
                mSatelliteControllerUT.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);

        // when Available satellite services support data service
        // And maxAllowedDataMode capped to SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED
        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode,
                SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED);
        doReturn(SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED)
                .when(mMockConfig)
                .getSatelliteMaxAllowedDataMode();

        dataSupportModeForPlmn =
                mSatelliteControllerUT.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);

        // when Available satellite services support data service
        // And maxAllowedDataMode capped to SATELLITE_DATA_SUPPORT_ALL
        mContextFixture.putIntResource(
                com.android.internal.R.integer.max_allowed_data_mode, SATELLITE_DATA_SUPPORT_ALL);
        doReturn(SATELLITE_DATA_SUPPORT_ALL).when(mMockConfig).getSatelliteMaxAllowedDataMode();

        dataSupportModeForPlmn =
                mSatelliteControllerUT.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);