diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 121bc03cf08..5a2f9293692 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -50,6 +50,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; +import com.android.settingslib.Utils; import java.util.List; @@ -253,8 +254,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } private void updateServiceState(ServiceState serviceState) { - final int state = serviceState.getState(); - if (state == ServiceState.STATE_OUT_OF_SERVICE || state == ServiceState.STATE_POWER_OFF) { + final int state = Utils.getCombinedServiceState(serviceState); + if (!Utils.isInService(serviceState)) { resetSignalStrength(); } @@ -297,10 +298,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O return; } - final int state = getCurrentServiceState().getState(); - - if ((ServiceState.STATE_OUT_OF_SERVICE == state) || - (ServiceState.STATE_POWER_OFF == state)) { + ServiceState serviceState = getCurrentServiceState(); + if (serviceState == null || !Utils.isInService(serviceState)) { return; } 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 606fe075c08..ffc17be7c3e 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java @@ -178,7 +178,7 @@ public class SimStatusDialogControllerTest { } @Test - public void initialize_updateDataStateWithPowerOff_shouldUpdateSettingAndResetSignalStrength() { + public void initialize_updateServiceStateWithPowerOff_shouldUpdateTextAndResetSignalStrength() { when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF); when(mPersistableBundle.getBoolean( CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); @@ -190,6 +190,33 @@ public class SimStatusDialogControllerTest { verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0"); } + @Test + public void initialize_updateVoiceDataOutOfService_shouldUpdateSettingAndResetSignalStrength() { + when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + when(mPersistableBundle.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); + + mController.initialize(); + + final String offServiceText = mContext.getString(R.string.radioInfo_service_out); + verify(mDialog).setText(SERVICE_STATE_VALUE_ID, offServiceText); + verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0"); + } + + @Test + public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateTextToBeInService() { + when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_IN_SERVICE); + when(mPersistableBundle.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); + + mController.initialize(); + + final String inServiceText = mContext.getString(R.string.radioInfo_service_in); + verify(mDialog).setText(SERVICE_STATE_VALUE_ID, inServiceText); + } + @Test public void initialize_updateSignalStrengthWith50_shouldUpdateSignalStrengthTo50() { final int signalDbm = 50; @@ -206,6 +233,27 @@ public class SimStatusDialogControllerTest { verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString); } + @Test + public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateSignalStrengthTo50() { + when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_IN_SERVICE); + when(mPersistableBundle.getBoolean( + CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); + + final int signalDbm = 50; + 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(); + + final String signalStrengthString = + mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu); + verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString); + } + @Test public void initialize_updateVoiceNetworkTypeWithEdge_shouldUpdateSettingToEdge() { when(mTelephonyManager.getVoiceNetworkType(anyInt())).thenReturn(