Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +36 −0 Original line number Diff line number Diff line Loading @@ -577,6 +577,9 @@ public class SatelliteController extends Handler { * carrierPlmnList. */ @GuardedBy("mSupportedSatelliteServicesLock") private final SparseArray<List<String>> mMergedPlmnListPerCarrier = new SparseArray<>(); /** Key Subscription ID, value : map to plmn info with related data plan. */ @GuardedBy("mSupportedSatelliteServicesLock") SparseArray<Map<String, Integer>> mEntitlementDataPlanMapPerCarrier = new SparseArray<>(); private static AtomicLong sNextSatelliteEnableRequestId = new AtomicLong(0); // key : subscriberId, value : provisioned or not. @GuardedBy("mSatelliteTokenProvisionedLock") Loading Loading @@ -662,6 +665,10 @@ public class SatelliteController extends Handler { @GuardedBy("mSatelliteModemStateLock") @SatelliteManager.SatelliteModemState private int mSatelliteModemState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN; // Data Plan types at entitlement for the plmn allowed public static final int SATELLITE_DATA_PLAN_METERED = 0; public static final int SATELLITE_DATA_PLAN_UNMETERED = 1; private BroadcastReceiver mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -4202,6 +4209,7 @@ public class SatelliteController extends Handler { */ public void onSatelliteEntitlementStatusUpdated(int subId, boolean entitlementEnabled, @Nullable List<String> allowedPlmnList, @Nullable List<String> barredPlmnList, @Nullable Map<String,Integer> plmnDataPlanMap, @Nullable IIntegerConsumer callback) { if (!mFeatureFlags.carrierEnabledSatelliteFlag()) { logd("onSatelliteEntitlementStatusUpdated: carrierEnabledSatelliteFlag is not enabled"); Loading @@ -4222,6 +4230,9 @@ public class SatelliteController extends Handler { if (barredPlmnList == null) { barredPlmnList = new ArrayList<>(); } if (plmnDataPlanMap == null) { plmnDataPlanMap = new HashMap<>(); } logd("onSatelliteEntitlementStatusUpdated subId=" + subId + ", entitlementEnabled=" + entitlementEnabled + ", allowedPlmnList=[" + String.join(",", allowedPlmnList) + "]" + ", barredPlmnList=[" Loading Loading @@ -4250,6 +4261,7 @@ public class SatelliteController extends Handler { mMergedPlmnListPerCarrier.remove(subId); mEntitlementPlmnListPerCarrier.put(subId, allowedPlmnList); mEntitlementBarredPlmnListPerCarrier.put(subId, barredPlmnList); mEntitlementDataPlanMapPerCarrier.put(subId, plmnDataPlanMap); updatePlmnListPerCarrier(subId); configureSatellitePlmnForCarrier(subId); mSubscriptionManagerService.setSatelliteEntitlementPlmnList(subId, allowedPlmnList); Loading Loading @@ -8278,4 +8290,28 @@ public class SatelliteController extends Handler { return mWifiStateEnabled; } } /** * Method to return the current data plan 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. * * @param subId current subscription id * @param plmn current registered plmn information * * @return Data supported modes {@link SatelliteController#SATELLITE_DATA_PLAN_METERED} */ public int getSatelliteDataPlanForPlmn(int subId, String plmn) { if (plmn != null) { synchronized (mSupportedSatelliteServicesLock) { Map<String, Integer> dataplanMap = mEntitlementDataPlanMapPerCarrier.get(subId); logd("data plan available for sub id:" + dataplanMap); if (dataplanMap != null && dataplanMap.containsKey(plmn)) { return dataplanMap.get(plmn); } } } // TODO (Override with carrier config value when configuration defined) return SATELLITE_DATA_PLAN_METERED; } } tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +73 −11 Original line number Diff line number Diff line Loading @@ -82,6 +82,8 @@ import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERV import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS; import static com.android.internal.telephony.satellite.SatelliteController.DEFAULT_CARRIER_EMERGENCY_CALL_WAIT_FOR_CONNECTION_TIMEOUT_MILLIS; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_DATA_PLAN_METERED; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_DATA_PLAN_UNMETERED; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_MODE_ENABLED_FALSE; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_MODE_ENABLED_TRUE; Loading Loading @@ -3167,7 +3169,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<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); Loading @@ -3187,7 +3189,7 @@ public class SatelliteControllerTest extends TelephonyTest { .when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, new ArrayList<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); Loading Loading @@ -3218,7 +3220,7 @@ public class SatelliteControllerTest extends TelephonyTest { List<String> entitlementPlmnList = new ArrayList<>(); List<String> barredPlmnList = new ArrayList<>(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading Loading @@ -3276,7 +3278,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", ""}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading @@ -3284,7 +3286,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "123456789"}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading @@ -3292,7 +3294,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "12"}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading @@ -3300,7 +3302,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "1234"}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); } Loading @@ -3309,7 +3311,7 @@ public class SatelliteControllerTest extends TelephonyTest { List<String> mergedPlmnList, List<String> overlayConfigPlmnList, List<String> barredPlmnList) { mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); List<String> plmnListPerCarrier = mSatelliteControllerUT.getSatellitePlmnsForCarrier( SUB_ID); Loading Loading @@ -3531,21 +3533,21 @@ public class SatelliteControllerTest extends TelephonyTest { // Change SUB_ID's EntitlementStatus to true mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, true, new ArrayList<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), 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<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), 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<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), mIIntegerConsumer); assertEquals(false, satelliteEnabledPerCarrier.get(SUB_ID)); assertEquals(true, satelliteEnabledPerCarrier.get(SUB_ID1)); Loading Loading @@ -6363,4 +6365,64 @@ public class SatelliteControllerTest extends TelephonyTest { return isProvisioned != null ? isProvisioned : false; } } @Test public void testGetSatelliteDataPlanForPlmn_WithEntitlement() throws Exception { logd("testGetSatelliteDataPlanForPlmn_WithEntitlement"); when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); replaceInstance(SatelliteController.class, "mMergedPlmnListPerCarrier", mSatelliteControllerUT, new SparseArray<>()); List<String> overlayConfigPlmnList = new ArrayList<>(); replaceInstance(SatelliteController.class, "mSatellitePlmnListFromOverlayConfig", mSatelliteControllerUT, overlayConfigPlmnList); mCarrierConfigBundle.putBoolean( CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, true); mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); List<String> entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "00103", "00104"}) .toList(); List<String> barredPlmnList = new ArrayList<>(); Map<String, Integer> dataPlanListMap = Map.of( "00101", SATELLITE_DATA_PLAN_METERED, "00103", SATELLITE_DATA_PLAN_UNMETERED); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, dataPlanListMap, mIIntegerConsumer); int dataPlanForPlmn; dataPlanForPlmn = mSatelliteControllerUT.getSatelliteDataPlanForPlmn(SUB_ID, "00101"); assertEquals(SATELLITE_DATA_PLAN_METERED, dataPlanForPlmn); dataPlanForPlmn = mSatelliteControllerUT.getSatelliteDataPlanForPlmn(SUB_ID, "00103"); assertEquals(SATELLITE_DATA_PLAN_UNMETERED, dataPlanForPlmn); } @Test public void testGetSatelliteDataPlanForPlmn_WithoutEntitlement() throws Exception { logd("testGetSatelliteDataPlanForPlmn_WithoutEntitlement"); when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); replaceInstance(SatelliteController.class, "mMergedPlmnListPerCarrier", mSatelliteControllerUT, new SparseArray<>()); List<String> overlayConfigPlmnList = new ArrayList<>(); replaceInstance(SatelliteController.class, "mSatellitePlmnListFromOverlayConfig", mSatelliteControllerUT, overlayConfigPlmnList); mCarrierConfigBundle.putBoolean( CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, true); mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); List<String> entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "00103", "00104"}) .toList(); List<String> barredPlmnList = new ArrayList<>(); Map<String, Integer> dataPlanListMap = new HashMap<>(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, dataPlanListMap, mIIntegerConsumer); int dataPlanForPlmn = mSatelliteControllerUT.getSatelliteDataPlanForPlmn(SUB_ID, "00101"); assertEquals(SATELLITE_DATA_PLAN_METERED, dataPlanForPlmn); } } Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +36 −0 Original line number Diff line number Diff line Loading @@ -577,6 +577,9 @@ public class SatelliteController extends Handler { * carrierPlmnList. */ @GuardedBy("mSupportedSatelliteServicesLock") private final SparseArray<List<String>> mMergedPlmnListPerCarrier = new SparseArray<>(); /** Key Subscription ID, value : map to plmn info with related data plan. */ @GuardedBy("mSupportedSatelliteServicesLock") SparseArray<Map<String, Integer>> mEntitlementDataPlanMapPerCarrier = new SparseArray<>(); private static AtomicLong sNextSatelliteEnableRequestId = new AtomicLong(0); // key : subscriberId, value : provisioned or not. @GuardedBy("mSatelliteTokenProvisionedLock") Loading Loading @@ -662,6 +665,10 @@ public class SatelliteController extends Handler { @GuardedBy("mSatelliteModemStateLock") @SatelliteManager.SatelliteModemState private int mSatelliteModemState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN; // Data Plan types at entitlement for the plmn allowed public static final int SATELLITE_DATA_PLAN_METERED = 0; public static final int SATELLITE_DATA_PLAN_UNMETERED = 1; private BroadcastReceiver mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -4202,6 +4209,7 @@ public class SatelliteController extends Handler { */ public void onSatelliteEntitlementStatusUpdated(int subId, boolean entitlementEnabled, @Nullable List<String> allowedPlmnList, @Nullable List<String> barredPlmnList, @Nullable Map<String,Integer> plmnDataPlanMap, @Nullable IIntegerConsumer callback) { if (!mFeatureFlags.carrierEnabledSatelliteFlag()) { logd("onSatelliteEntitlementStatusUpdated: carrierEnabledSatelliteFlag is not enabled"); Loading @@ -4222,6 +4230,9 @@ public class SatelliteController extends Handler { if (barredPlmnList == null) { barredPlmnList = new ArrayList<>(); } if (plmnDataPlanMap == null) { plmnDataPlanMap = new HashMap<>(); } logd("onSatelliteEntitlementStatusUpdated subId=" + subId + ", entitlementEnabled=" + entitlementEnabled + ", allowedPlmnList=[" + String.join(",", allowedPlmnList) + "]" + ", barredPlmnList=[" Loading Loading @@ -4250,6 +4261,7 @@ public class SatelliteController extends Handler { mMergedPlmnListPerCarrier.remove(subId); mEntitlementPlmnListPerCarrier.put(subId, allowedPlmnList); mEntitlementBarredPlmnListPerCarrier.put(subId, barredPlmnList); mEntitlementDataPlanMapPerCarrier.put(subId, plmnDataPlanMap); updatePlmnListPerCarrier(subId); configureSatellitePlmnForCarrier(subId); mSubscriptionManagerService.setSatelliteEntitlementPlmnList(subId, allowedPlmnList); Loading Loading @@ -8278,4 +8290,28 @@ public class SatelliteController extends Handler { return mWifiStateEnabled; } } /** * Method to return the current data plan 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. * * @param subId current subscription id * @param plmn current registered plmn information * * @return Data supported modes {@link SatelliteController#SATELLITE_DATA_PLAN_METERED} */ public int getSatelliteDataPlanForPlmn(int subId, String plmn) { if (plmn != null) { synchronized (mSupportedSatelliteServicesLock) { Map<String, Integer> dataplanMap = mEntitlementDataPlanMapPerCarrier.get(subId); logd("data plan available for sub id:" + dataplanMap); if (dataplanMap != null && dataplanMap.containsKey(plmn)) { return dataplanMap.get(plmn); } } } // TODO (Override with carrier config value when configuration defined) return SATELLITE_DATA_PLAN_METERED; } }
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +73 −11 Original line number Diff line number Diff line Loading @@ -82,6 +82,8 @@ import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERV import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS; import static com.android.internal.telephony.satellite.SatelliteController.DEFAULT_CARRIER_EMERGENCY_CALL_WAIT_FOR_CONNECTION_TIMEOUT_MILLIS; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_DATA_PLAN_METERED; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_DATA_PLAN_UNMETERED; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_MODE_ENABLED_FALSE; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_MODE_ENABLED_TRUE; Loading Loading @@ -3167,7 +3169,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<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); Loading @@ -3187,7 +3189,7 @@ public class SatelliteControllerTest extends TelephonyTest { .when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, new ArrayList<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); Loading Loading @@ -3218,7 +3220,7 @@ public class SatelliteControllerTest extends TelephonyTest { List<String> entitlementPlmnList = new ArrayList<>(); List<String> barredPlmnList = new ArrayList<>(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading Loading @@ -3276,7 +3278,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", ""}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading @@ -3284,7 +3286,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "123456789"}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading @@ -3292,7 +3294,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "12"}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); Loading @@ -3300,7 +3302,7 @@ public class SatelliteControllerTest extends TelephonyTest { reset(mMockSatelliteModemInterface); entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "1234"}).toList(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled( any(SatelliteModemEnableRequestAttributes.class), any(Message.class)); } Loading @@ -3309,7 +3311,7 @@ public class SatelliteControllerTest extends TelephonyTest { List<String> mergedPlmnList, List<String> overlayConfigPlmnList, List<String> barredPlmnList) { mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, mIIntegerConsumer); entitlementPlmnList, barredPlmnList, new HashMap<>(), mIIntegerConsumer); List<String> plmnListPerCarrier = mSatelliteControllerUT.getSatellitePlmnsForCarrier( SUB_ID); Loading Loading @@ -3531,21 +3533,21 @@ public class SatelliteControllerTest extends TelephonyTest { // Change SUB_ID's EntitlementStatus to true mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, true, new ArrayList<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), 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<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), 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<>(), new ArrayList<>(), mIIntegerConsumer); new ArrayList<>(), new HashMap<>(), mIIntegerConsumer); assertEquals(false, satelliteEnabledPerCarrier.get(SUB_ID)); assertEquals(true, satelliteEnabledPerCarrier.get(SUB_ID1)); Loading Loading @@ -6363,4 +6365,64 @@ public class SatelliteControllerTest extends TelephonyTest { return isProvisioned != null ? isProvisioned : false; } } @Test public void testGetSatelliteDataPlanForPlmn_WithEntitlement() throws Exception { logd("testGetSatelliteDataPlanForPlmn_WithEntitlement"); when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); replaceInstance(SatelliteController.class, "mMergedPlmnListPerCarrier", mSatelliteControllerUT, new SparseArray<>()); List<String> overlayConfigPlmnList = new ArrayList<>(); replaceInstance(SatelliteController.class, "mSatellitePlmnListFromOverlayConfig", mSatelliteControllerUT, overlayConfigPlmnList); mCarrierConfigBundle.putBoolean( CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, true); mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); List<String> entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "00103", "00104"}) .toList(); List<String> barredPlmnList = new ArrayList<>(); Map<String, Integer> dataPlanListMap = Map.of( "00101", SATELLITE_DATA_PLAN_METERED, "00103", SATELLITE_DATA_PLAN_UNMETERED); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, dataPlanListMap, mIIntegerConsumer); int dataPlanForPlmn; dataPlanForPlmn = mSatelliteControllerUT.getSatelliteDataPlanForPlmn(SUB_ID, "00101"); assertEquals(SATELLITE_DATA_PLAN_METERED, dataPlanForPlmn); dataPlanForPlmn = mSatelliteControllerUT.getSatelliteDataPlanForPlmn(SUB_ID, "00103"); assertEquals(SATELLITE_DATA_PLAN_UNMETERED, dataPlanForPlmn); } @Test public void testGetSatelliteDataPlanForPlmn_WithoutEntitlement() throws Exception { logd("testGetSatelliteDataPlanForPlmn_WithoutEntitlement"); when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); replaceInstance(SatelliteController.class, "mMergedPlmnListPerCarrier", mSatelliteControllerUT, new SparseArray<>()); List<String> overlayConfigPlmnList = new ArrayList<>(); replaceInstance(SatelliteController.class, "mSatellitePlmnListFromOverlayConfig", mSatelliteControllerUT, overlayConfigPlmnList); mCarrierConfigBundle.putBoolean( CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, true); mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); List<String> entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "00103", "00104"}) .toList(); List<String> barredPlmnList = new ArrayList<>(); Map<String, Integer> dataPlanListMap = new HashMap<>(); mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, false, entitlementPlmnList, barredPlmnList, dataPlanListMap, mIIntegerConsumer); int dataPlanForPlmn = mSatelliteControllerUT.getSatelliteDataPlanForPlmn(SUB_ID, "00101"); assertEquals(SATELLITE_DATA_PLAN_METERED, dataPlanForPlmn); } }