diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 15ca87bd859..35b8bd1576a 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -68,6 +68,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O @VisibleForTesting final static int SERVICE_STATE_VALUE_ID = R.id.service_state_value; @VisibleForTesting + final static int SIGNAL_STRENGTH_LABEL_ID = R.id.signal_strength_label; + @VisibleForTesting final static int SIGNAL_STRENGTH_VALUE_ID = R.id.signal_strength_value; @VisibleForTesting final static int CELLULAR_NETWORK_TYPE_VALUE_ID = R.id.network_type_value; @@ -262,6 +264,21 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } private void updateSignalStrength(SignalStrength signalStrength) { + final int subscriptionId = mSubscriptionInfo.getSubscriptionId(); + final PersistableBundle carrierConfig = + mCarrierConfigManager.getConfigForSubId(subscriptionId); + // by default we show the signal strength + boolean showSignalStrength = true; + if (carrierConfig != null) { + showSignalStrength = carrierConfig.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL); + } + if (!showSignalStrength) { + mDialog.removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID); + mDialog.removeSettingFromScreen(SIGNAL_STRENGTH_VALUE_ID); + return; + } + final int state = getCurrentServiceState().getState(); if ((ServiceState.STATE_OUT_OF_SERVICE == state) || @@ -327,9 +344,14 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O private void updateIccidNumber() { final int subscriptionId = mSubscriptionInfo.getSubscriptionId(); - final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subscriptionId); - final boolean showIccId = carrierConfig.getBoolean( - CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL); + final PersistableBundle carrierConfig = + mCarrierConfigManager.getConfigForSubId(subscriptionId); + // do not show iccid by default + boolean showIccId = false; + if (carrierConfig != null) { + showIccId = carrierConfig.getBoolean( + CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL); + } if (!showIccId) { mDialog.removeSettingFromScreen(ICCID_INFO_LABEL_ID); mDialog.removeSettingFromScreen(ICCID_INFO_VALUE_ID); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java index fd4816233f2..2f896ac9f27 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java @@ -34,11 +34,14 @@ import static com.android.settings.deviceinfo.simstatus.SimStatusDialogControlle .ROAMING_INFO_VALUE_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController .SERVICE_STATE_VALUE_ID; +import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController + .SIGNAL_STRENGTH_LABEL_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController .SIGNAL_STRENGTH_VALUE_ID; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -157,6 +160,9 @@ public class SimStatusDialogControllerTest { @Test public void initialize_updateDataStateWithPowerOff_shouldUpdateSettingAndResetSignalStrength() { when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF); + when(mPersistableBundle.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn( + true); mController.initialize(); @@ -172,6 +178,9 @@ public class SimStatusDialogControllerTest { final int signalAsu = 50; doReturn(signalDbm).when(mController).getDbm(mSignalStrength); doReturn(signalAsu).when(mController).getAsuLevel(mSignalStrength); + when(mPersistableBundle.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn( + true); mController.initialize(); @@ -225,6 +234,30 @@ public class SimStatusDialogControllerTest { verify(mDialog).removeSettingFromScreen(ICCID_INFO_VALUE_ID); } + @Test + public void initialize_doNotShowSignalStrength_shouldRemoveSignalStrengthSetting() { + when(mPersistableBundle.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn( + false); + + mController.initialize(); + + verify(mDialog).removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID); + verify(mDialog).removeSettingFromScreen(SIGNAL_STRENGTH_VALUE_ID); + } + + @Test + public void initialize_showSignalStrengthAndIccId_shouldShowSignalStrengthAndIccIdSetting() { + // getConfigForSubId is nullable, so make sure the default behavior is correct + when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(null); + + mController.initialize(); + + verify(mDialog).setText(eq(SIGNAL_STRENGTH_VALUE_ID), any()); + verify(mDialog).removeSettingFromScreen(ICCID_INFO_LABEL_ID); + verify(mDialog).removeSettingFromScreen(ICCID_INFO_VALUE_ID); + } + @Test public void initialize_showIccid_shouldSetIccidToSetting() { final String iccid = "12351351231241";