Loading AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,7 @@ <activity android:name="Settings$NetworkSelectActivity" android:label="@string/choose_network_title" android:permission="android.permission.SATELLITE_COMMUNICATION" android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize"> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.network.telephony.NetworkSelectSettings" /> Loading src/com/android/settings/network/telephony/NetworkSelectSettings.java +76 −13 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.satellite.SatelliteManager; import android.util.Log; import android.view.View; Loading @@ -43,6 +44,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import com.android.internal.annotations.Initializer; import com.android.internal.telephony.OperatorInfo; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; Loading @@ -56,6 +58,8 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; /** * "Choose network" settings UI for the Settings app. Loading @@ -82,6 +86,8 @@ public class NetworkSelectSettings extends DashboardFragment { List<CellInfo> mCellInfoList; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private TelephonyManager mTelephonyManager; private SatelliteManager mSatelliteManager; private CarrierConfigManager mCarrierConfigManager; private List<String> mForbiddenPlmns; private boolean mShow4GForLTE = false; private NetworkScanHelper mNetworkScanHelper; Loading @@ -93,6 +99,8 @@ public class NetworkSelectSettings extends DashboardFragment { private long mWaitingForNumberOfScanResults; @VisibleForTesting boolean mIsAggregationEnabled = false; private CarrierConfigManager.CarrierConfigChangeListener mCarrierConfigChangeListener; private AtomicBoolean mShouldFilterOutSatellitePlmn = new AtomicBoolean(); @Override public void onCreate(Bundle icicle) { Loading @@ -102,28 +110,41 @@ public class NetworkSelectSettings extends DashboardFragment { @Keep @VisibleForTesting @Initializer protected void onCreateInitialization() { mUseNewApi = enableNewAutoSelectNetworkUI(getContext()); Context context = getContext(); mUseNewApi = enableNewAutoSelectNetworkUI(context); mSubId = getSubId(); mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS); mStatusMessagePreference = new Preference(getContext()); mStatusMessagePreference = new Preference(context); mStatusMessagePreference.setSelectable(false); mSelectedPreference = null; mTelephonyManager = getTelephonyManager(getContext(), mSubId); mTelephonyManager = getTelephonyManager(context, mSubId); mSatelliteManager = getSatelliteManager(context); mCarrierConfigManager = getCarrierConfigManager(context); mNetworkScanHelper = new NetworkScanHelper( mTelephonyManager, mCallback, mNetworkScanExecutor); PersistableBundle bundle = getCarrierConfigManager(getContext()) .getConfigForSubId(mSubId); if (bundle != null) { mShow4GForLTE = bundle.getBoolean( CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); } mMetricsFeatureProvider = getMetricsFeatureProvider(getContext()); mIsAggregationEnabled = enableAggregation(getContext()); PersistableBundle bundle = mCarrierConfigManager.getConfigForSubId(mSubId, CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL); mShow4GForLTE = bundle.getBoolean(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, false); mShouldFilterOutSatellitePlmn.set(bundle.getBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true)); mMetricsFeatureProvider = getMetricsFeatureProvider(context); mIsAggregationEnabled = enableAggregation(context); Log.d(TAG, "init: mUseNewApi:" + mUseNewApi + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId); mCarrierConfigChangeListener = (slotIndex, subId, carrierId, specificCarrierId) -> handleCarrierConfigChanged( subId); mCarrierConfigManager.registerCarrierConfigChangeListener(mNetworkScanExecutor, mCarrierConfigChangeListener); } @Keep Loading Loading @@ -165,6 +186,12 @@ public class NetworkSelectSettings extends DashboardFragment { return FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Keep @VisibleForTesting protected SatelliteManager getSatelliteManager(Context context) { return context.getSystemService(SatelliteManager.class); } @Keep @VisibleForTesting protected boolean isPreferenceScreenEnabled() { Loading Loading @@ -385,7 +412,43 @@ public class NetworkSelectSettings extends DashboardFragment { } aggregatedList.add(cellInfo); } return aggregatedList; return filterOutSatellitePlmn(aggregatedList); } /* We do not want to expose carrier satellite plmns to the user when manually scan the cellular network. Therefore, it is needed to filter out satellite plmns from current cell info list */ private List<CellInfo> filterOutSatellitePlmn(List<CellInfo> cellInfoList) { List<String> aggregatedSatellitePlmn = getAllSatellitePlmnsForCarrierWrapper(); if (!mShouldFilterOutSatellitePlmn.get() || aggregatedSatellitePlmn.isEmpty()) { return cellInfoList; } return cellInfoList.stream() .filter(cellInfo -> !aggregatedSatellitePlmn.contains( CellInfoUtil.getOperatorNumeric(cellInfo.getCellIdentity()))) .collect(Collectors.toList()); } /** * Serves as a wrapper method for {@link SatelliteManager#getAllSatellitePlmnsForCarrier(int)}. * Since SatelliteManager is final, this wrapper enables mocking or spying of * {@link SatelliteManager#getAllSatellitePlmnsForCarrier(int)} for unit testing purposes. */ @VisibleForTesting protected List<String> getAllSatellitePlmnsForCarrierWrapper() { return mSatelliteManager.getAllSatellitePlmnsForCarrier(mSubId); } private void handleCarrierConfigChanged(int subId) { PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId, CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL); boolean shouldFilterSatellitePlmn = config.getBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); if (shouldFilterSatellitePlmn != mShouldFilterOutSatellitePlmn.get()) { mShouldFilterOutSatellitePlmn.set(shouldFilterSatellitePlmn); } } private final NetworkScanHelper.NetworkScanCallback mCallback = Loading tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +98 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading Loading @@ -50,6 +51,7 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; Loading Loading @@ -277,6 +279,102 @@ public class NetworkSelectSettingsTest { assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_filterOutSatellitePlmn_whenKeyIsTrue() { PersistableBundle config = new PersistableBundle(); config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); doReturn(config).when(mCarrierConfigManager).getConfigForSubId(eq(SUB_ID), eq(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL), eq(CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL)); List<String> testSatellitePlmn = new ArrayList<>(Arrays.asList("123232", "123235")); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); /* Expect filter out satellite plmns when KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL is true, and there is available satellite plmns. */ mNetworkSelectSettings.onCreateInitialization(); List<CellInfo> testList = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 1234, "123", "235", "CarrierD")); List<CellInfo> expected = Arrays.asList( createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_filterOutSatellitePlmn_whenNoSatellitePlmnIsAvailable() { PersistableBundle config = new PersistableBundle(); config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); doReturn(config).when(mCarrierConfigManager).getConfigForSubId(eq(SUB_ID), eq(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL), eq(CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL)); List<String> testSatellitePlmn = new ArrayList<>(Arrays.asList("123232", "123235")); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); // Expect no filter out when there is no available satellite plmns. mNetworkSelectSettings.onCreateInitialization(); testSatellitePlmn = new ArrayList<>(); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); mNetworkSelectSettings.onCreateInitialization(); List<CellInfo> testList = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); List<CellInfo> expected = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); // Expect no filter out when KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL is false. config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, false); mNetworkSelectSettings.onCreateInitialization(); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_filterOutSatellitePlmn_whenKeyIsFalse() { PersistableBundle config = new PersistableBundle(); config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); doReturn(config).when(mCarrierConfigManager).getConfigForSubId(eq(SUB_ID), eq(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL), eq(CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL)); List<String> testSatellitePlmn = new ArrayList<>(Arrays.asList("123232", "123235")); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); // Expect no filter out when KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL is false. config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, false); mNetworkSelectSettings.onCreateInitialization(); List<CellInfo> testList = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); List<CellInfo> expected = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } private CellInfoLte createLteCellInfo(boolean registered, int cellId, String mcc, String mnc, String plmnName) { CellIdentityLte cil = new CellIdentityLte( Loading Loading
AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,7 @@ <activity android:name="Settings$NetworkSelectActivity" android:label="@string/choose_network_title" android:permission="android.permission.SATELLITE_COMMUNICATION" android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize"> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.network.telephony.NetworkSelectSettings" /> Loading
src/com/android/settings/network/telephony/NetworkSelectSettings.java +76 −13 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.satellite.SatelliteManager; import android.util.Log; import android.view.View; Loading @@ -43,6 +44,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import com.android.internal.annotations.Initializer; import com.android.internal.telephony.OperatorInfo; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; Loading @@ -56,6 +58,8 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; /** * "Choose network" settings UI for the Settings app. Loading @@ -82,6 +86,8 @@ public class NetworkSelectSettings extends DashboardFragment { List<CellInfo> mCellInfoList; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private TelephonyManager mTelephonyManager; private SatelliteManager mSatelliteManager; private CarrierConfigManager mCarrierConfigManager; private List<String> mForbiddenPlmns; private boolean mShow4GForLTE = false; private NetworkScanHelper mNetworkScanHelper; Loading @@ -93,6 +99,8 @@ public class NetworkSelectSettings extends DashboardFragment { private long mWaitingForNumberOfScanResults; @VisibleForTesting boolean mIsAggregationEnabled = false; private CarrierConfigManager.CarrierConfigChangeListener mCarrierConfigChangeListener; private AtomicBoolean mShouldFilterOutSatellitePlmn = new AtomicBoolean(); @Override public void onCreate(Bundle icicle) { Loading @@ -102,28 +110,41 @@ public class NetworkSelectSettings extends DashboardFragment { @Keep @VisibleForTesting @Initializer protected void onCreateInitialization() { mUseNewApi = enableNewAutoSelectNetworkUI(getContext()); Context context = getContext(); mUseNewApi = enableNewAutoSelectNetworkUI(context); mSubId = getSubId(); mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS); mStatusMessagePreference = new Preference(getContext()); mStatusMessagePreference = new Preference(context); mStatusMessagePreference.setSelectable(false); mSelectedPreference = null; mTelephonyManager = getTelephonyManager(getContext(), mSubId); mTelephonyManager = getTelephonyManager(context, mSubId); mSatelliteManager = getSatelliteManager(context); mCarrierConfigManager = getCarrierConfigManager(context); mNetworkScanHelper = new NetworkScanHelper( mTelephonyManager, mCallback, mNetworkScanExecutor); PersistableBundle bundle = getCarrierConfigManager(getContext()) .getConfigForSubId(mSubId); if (bundle != null) { mShow4GForLTE = bundle.getBoolean( CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); } mMetricsFeatureProvider = getMetricsFeatureProvider(getContext()); mIsAggregationEnabled = enableAggregation(getContext()); PersistableBundle bundle = mCarrierConfigManager.getConfigForSubId(mSubId, CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL); mShow4GForLTE = bundle.getBoolean(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, false); mShouldFilterOutSatellitePlmn.set(bundle.getBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true)); mMetricsFeatureProvider = getMetricsFeatureProvider(context); mIsAggregationEnabled = enableAggregation(context); Log.d(TAG, "init: mUseNewApi:" + mUseNewApi + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId); mCarrierConfigChangeListener = (slotIndex, subId, carrierId, specificCarrierId) -> handleCarrierConfigChanged( subId); mCarrierConfigManager.registerCarrierConfigChangeListener(mNetworkScanExecutor, mCarrierConfigChangeListener); } @Keep Loading Loading @@ -165,6 +186,12 @@ public class NetworkSelectSettings extends DashboardFragment { return FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Keep @VisibleForTesting protected SatelliteManager getSatelliteManager(Context context) { return context.getSystemService(SatelliteManager.class); } @Keep @VisibleForTesting protected boolean isPreferenceScreenEnabled() { Loading Loading @@ -385,7 +412,43 @@ public class NetworkSelectSettings extends DashboardFragment { } aggregatedList.add(cellInfo); } return aggregatedList; return filterOutSatellitePlmn(aggregatedList); } /* We do not want to expose carrier satellite plmns to the user when manually scan the cellular network. Therefore, it is needed to filter out satellite plmns from current cell info list */ private List<CellInfo> filterOutSatellitePlmn(List<CellInfo> cellInfoList) { List<String> aggregatedSatellitePlmn = getAllSatellitePlmnsForCarrierWrapper(); if (!mShouldFilterOutSatellitePlmn.get() || aggregatedSatellitePlmn.isEmpty()) { return cellInfoList; } return cellInfoList.stream() .filter(cellInfo -> !aggregatedSatellitePlmn.contains( CellInfoUtil.getOperatorNumeric(cellInfo.getCellIdentity()))) .collect(Collectors.toList()); } /** * Serves as a wrapper method for {@link SatelliteManager#getAllSatellitePlmnsForCarrier(int)}. * Since SatelliteManager is final, this wrapper enables mocking or spying of * {@link SatelliteManager#getAllSatellitePlmnsForCarrier(int)} for unit testing purposes. */ @VisibleForTesting protected List<String> getAllSatellitePlmnsForCarrierWrapper() { return mSatelliteManager.getAllSatellitePlmnsForCarrier(mSubId); } private void handleCarrierConfigChanged(int subId) { PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId, CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL); boolean shouldFilterSatellitePlmn = config.getBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); if (shouldFilterSatellitePlmn != mShouldFilterOutSatellitePlmn.get()) { mShouldFilterOutSatellitePlmn.set(shouldFilterSatellitePlmn); } } private final NetworkScanHelper.NetworkScanCallback mCallback = Loading
tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +98 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading Loading @@ -50,6 +51,7 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; Loading Loading @@ -277,6 +279,102 @@ public class NetworkSelectSettingsTest { assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_filterOutSatellitePlmn_whenKeyIsTrue() { PersistableBundle config = new PersistableBundle(); config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); doReturn(config).when(mCarrierConfigManager).getConfigForSubId(eq(SUB_ID), eq(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL), eq(CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL)); List<String> testSatellitePlmn = new ArrayList<>(Arrays.asList("123232", "123235")); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); /* Expect filter out satellite plmns when KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL is true, and there is available satellite plmns. */ mNetworkSelectSettings.onCreateInitialization(); List<CellInfo> testList = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 1234, "123", "235", "CarrierD")); List<CellInfo> expected = Arrays.asList( createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_filterOutSatellitePlmn_whenNoSatellitePlmnIsAvailable() { PersistableBundle config = new PersistableBundle(); config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); doReturn(config).when(mCarrierConfigManager).getConfigForSubId(eq(SUB_ID), eq(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL), eq(CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL)); List<String> testSatellitePlmn = new ArrayList<>(Arrays.asList("123232", "123235")); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); // Expect no filter out when there is no available satellite plmns. mNetworkSelectSettings.onCreateInitialization(); testSatellitePlmn = new ArrayList<>(); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); mNetworkSelectSettings.onCreateInitialization(); List<CellInfo> testList = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); List<CellInfo> expected = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); // Expect no filter out when KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL is false. config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, false); mNetworkSelectSettings.onCreateInitialization(); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_filterOutSatellitePlmn_whenKeyIsFalse() { PersistableBundle config = new PersistableBundle(); config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true); doReturn(config).when(mCarrierConfigManager).getConfigForSubId(eq(SUB_ID), eq(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL), eq(CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL)); List<String> testSatellitePlmn = new ArrayList<>(Arrays.asList("123232", "123235")); doReturn(testSatellitePlmn).when( mNetworkSelectSettings).getAllSatellitePlmnsForCarrierWrapper(); // Expect no filter out when KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL is false. config.putBoolean( CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, false); mNetworkSelectSettings.onCreateInitialization(); List<CellInfo> testList = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); List<CellInfo> expected = Arrays.asList( createLteCellInfo(true, 123, "123", "232", "CarrierA"), createGsmCellInfo(false, 123, "123", "233", "CarrierB"), createLteCellInfo(false, 1234, "123", "234", "CarrierC"), createGsmCellInfo(false, 12345, "123", "235", "CarrierD")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } private CellInfoLte createLteCellInfo(boolean registered, int cellId, String mcc, String mnc, String plmnName) { CellIdentityLte cil = new CellIdentityLte( Loading