Merge changes Iccd209fd,Ia0c32882 into main

* changes:
  Refactor signal strength in SIM status
  Refactor SimStatusDialogRepository
This commit is contained in:
Chaohui Wang
2024-05-29 04:13:32 +00:00
committed by Android (Google) Code Review
9 changed files with 512 additions and 419 deletions

View File

@@ -28,26 +28,18 @@ import static com.android.settings.deviceinfo.simstatus.SimStatusDialogControlle
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_VALUE_ID;
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.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.junit.Assert.assertTrue;
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.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.CellSignalStrength;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -71,7 +63,6 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -87,14 +78,6 @@ public class SimStatusDialogControllerTest {
@Mock
private ServiceState mServiceState;
@Mock
private SignalStrength mSignalStrength;
@Mock
private CellSignalStrength mCellSignalStrengthCdma;
@Mock
private CellSignalStrength mCellSignalStrengthLte;
@Mock
private CellSignalStrength mCellSignalStrengthWcdma;
@Mock
private CarrierConfigManager mCarrierConfigManager;
private PersistableBundle mPersistableBundle;
@Mock
@@ -149,15 +132,6 @@ public class SimStatusDialogControllerTest {
mUpdatePhoneNumberCount.incrementAndGet();
}
};
// CellSignalStrength setup
doReturn(0).when(mCellSignalStrengthCdma).getDbm();
doReturn(0).when(mCellSignalStrengthCdma).getAsuLevel();
doReturn(0).when(mCellSignalStrengthLte).getDbm();
doReturn(0).when(mCellSignalStrengthLte).getAsuLevel();
doReturn(0).when(mCellSignalStrengthWcdma).getDbm();
doReturn(0).when(mCellSignalStrengthWcdma).getAsuLevel();
doReturn(null).when(mSignalStrength).getCellSignalStrengths();
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
@@ -172,10 +146,7 @@ public class SimStatusDialogControllerTest {
mPersistableBundle = new PersistableBundle();
when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle);
mPersistableBundle.putBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL, true);
doReturn(mServiceState).when(mTelephonyManager).getServiceState();
doReturn(mSignalStrength).when(mTelephonyManager).getSignalStrength();
}
@Test
@@ -218,7 +189,7 @@ public class SimStatusDialogControllerTest {
@Test
@Ignore("b/337417520")
public void initialize_updateServiceStateWithPowerOff_shouldUpdateTextAndResetSignalStrength() {
public void initialize_updateServiceStateWithPowerOff_shouldUpdateText() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF);
mController.initialize();
@@ -226,12 +197,11 @@ public class SimStatusDialogControllerTest {
final String offServiceText = ResourcesUtils.getResourcesString(
mContext, "radioInfo_service_off");
verify(mDialog).setText(SERVICE_STATE_VALUE_ID, offServiceText);
verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0");
}
@Test
@Ignore("b/337417520")
public void initialize_updateVoiceDataOutOfService_shouldUpdateSettingAndResetSignalStrength() {
public void initialize_updateVoiceDataOutOfService_shouldUpdateSetting() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
when(mServiceState.getDataRegistrationState()).thenReturn(
ServiceState.STATE_OUT_OF_SERVICE);
@@ -241,7 +211,6 @@ public class SimStatusDialogControllerTest {
final String offServiceText = ResourcesUtils.getResourcesString(
mContext, "radioInfo_service_out");
verify(mDialog).setText(SERVICE_STATE_VALUE_ID, offServiceText);
verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0");
}
@Test
@@ -256,52 +225,6 @@ public class SimStatusDialogControllerTest {
verify(mDialog).setText(SERVICE_STATE_VALUE_ID, inServiceText);
}
@Test
public void initialize_updateSignalStrengthWithLte50Wcdma40_shouldUpdateSignalStrengthTo50() {
final int lteDbm = 50;
final int lteAsu = 50;
final int wcdmaDbm = 40;
final int wcdmaAsu = 40;
setupCellSignalStrength_lteWcdma(lteDbm, lteAsu, wcdmaDbm, wcdmaAsu);
mController.initialize();
final String signalStrengthString = ResourcesUtils.getResourcesString(
mContext, "sim_signal_strength", lteDbm, lteAsu);
verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
}
@Test
public void initialize_updateSignalStrengthWithLte50Cdma30_shouldUpdateSignalStrengthTo50() {
final int lteDbm = 50;
final int lteAsu = 50;
final int cdmaDbm = 30;
final int cdmaAsu = 30;
setupCellSignalStrength_lteCdma(lteDbm, lteAsu, cdmaDbm, cdmaAsu);
mController.initialize();
final String signalStrengthString = ResourcesUtils.getResourcesString(
mContext, "sim_signal_strength", lteDbm, lteAsu);
verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
}
@Test
public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateSignalStrengthTo50() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE);
final int lteDbm = 50;
final int lteAsu = 50;
setupCellSignalStrength_lteOnly(lteDbm, lteAsu);
mController.initialize();
final String signalStrengthString = ResourcesUtils.getResourcesString(
mContext, "sim_signal_strength", lteDbm, lteAsu);
verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
}
@Test
public void initialize_updateVoiceNetworkTypeWithEdge_shouldUpdateSettingToEdge() {
when(mTelephonyManager.getVoiceNetworkType()).thenReturn(
@@ -357,17 +280,6 @@ public class SimStatusDialogControllerTest {
verify(mDialog).removeSettingFromScreen(ICCID_INFO_VALUE_ID);
}
@Test
public void initialize_doNotShowSignalStrength_shouldRemoveSignalStrengthSetting() {
mPersistableBundle.putBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL, false);
mController.initialize();
verify(mDialog, times(2)).removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID);
verify(mDialog, times(2)).removeSettingFromScreen(SIGNAL_STRENGTH_VALUE_ID);
}
@Test
public void initialize_showSignalStrengthAndIccId_shouldShowSignalStrengthAndIccIdSetting() {
// getConfigForSubId is nullable, so make sure the default behavior is correct
@@ -375,7 +287,6 @@ public class SimStatusDialogControllerTest {
mController.initialize();
verify(mDialog, times(2)).setText(eq(SIGNAL_STRENGTH_VALUE_ID), any());
verify(mDialog).removeSettingFromScreen(ICCID_INFO_LABEL_ID);
verify(mDialog).removeSettingFromScreen(ICCID_INFO_VALUE_ID);
}
@@ -394,8 +305,6 @@ public class SimStatusDialogControllerTest {
@Test
@Ignore
public void initialize_imsRegistered_shouldSetImsRegistrationStateSummaryToRegisterd() {
mPersistableBundle.putBoolean(
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true);
when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true);
mController.initialize();
@@ -407,8 +316,6 @@ public class SimStatusDialogControllerTest {
@Test
@Ignore
public void initialize_imsNotRegistered_shouldSetImsRegistrationStateSummaryToNotRegisterd() {
mPersistableBundle.putBoolean(
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true);
when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false);
mController.initialize();
@@ -418,67 +325,19 @@ public class SimStatusDialogControllerTest {
}
@Test
public void initialize_showImsRegistration_shouldNotRemoveImsRegistrationStateSetting() {
mPersistableBundle.putBoolean(
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true);
@Ignore("b/337417520")
public void initialize_showImsRegistration_shouldShowImsRegistrationStateSetting() {
mController.initialize();
verify(mDialog, never()).removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_VALUE_ID, true);
}
@Test
public void initialize_doNotShowImsRegistration_shouldRemoveImsRegistrationStateSetting() {
mPersistableBundle.putBoolean(
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, false);
@Ignore("b/337417520")
public void initialize_doNotShowImsRegistration_shouldHideImsRegistrationStateSetting() {
mController.initialize();
verify(mDialog).removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID);
verify(mDialog).removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
}
@Test
public void initialize_nullSignalStrength_noCrash() {
doReturn(null).when(mTelephonyManager).getSignalStrength();
// we should not crash when running the following line
mController.initialize();
}
private void setupCellSignalStrength_lteWcdma(int lteDbm, int lteAsu, int wcdmaDbm,
int wcdmaAsu) {
doReturn(lteDbm).when(mCellSignalStrengthLte).getDbm();
doReturn(lteAsu).when(mCellSignalStrengthLte).getAsuLevel();
doReturn(wcdmaDbm).when(mCellSignalStrengthWcdma).getDbm();
doReturn(wcdmaAsu).when(mCellSignalStrengthWcdma).getAsuLevel();
List<CellSignalStrength> cellSignalStrengthList = new ArrayList<>(2);
cellSignalStrengthList.add(mCellSignalStrengthLte);
cellSignalStrengthList.add(mCellSignalStrengthWcdma);
doReturn(cellSignalStrengthList).when(mSignalStrength).getCellSignalStrengths();
}
private void setupCellSignalStrength_lteCdma(int lteDbm, int lteAsu, int cdmaDbm, int cdmaAsu) {
doReturn(lteDbm).when(mCellSignalStrengthLte).getDbm();
doReturn(lteAsu).when(mCellSignalStrengthLte).getAsuLevel();
doReturn(cdmaDbm).when(mCellSignalStrengthCdma).getDbm();
doReturn(cdmaAsu).when(mCellSignalStrengthCdma).getAsuLevel();
List<CellSignalStrength> cellSignalStrengthList = new ArrayList<>(2);
cellSignalStrengthList.add(mCellSignalStrengthLte);
cellSignalStrengthList.add(mCellSignalStrengthCdma);
doReturn(cellSignalStrengthList).when(mSignalStrength).getCellSignalStrengths();
}
private void setupCellSignalStrength_lteOnly(int lteDbm, int lteAsu) {
doReturn(lteDbm).when(mCellSignalStrengthLte).getDbm();
doReturn(lteAsu).when(mCellSignalStrengthLte).getAsuLevel();
List<CellSignalStrength> cellSignalStrengthList = new ArrayList<>(2);
cellSignalStrengthList.add(mCellSignalStrengthLte);
doReturn(cellSignalStrengthList).when(mSignalStrength).getCellSignalStrengths();
verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_LABEL_ID, false);
verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_VALUE_ID, false);
}
}