Merge "[Settings] Add voice call status and VoLTE mode detection into VoLTE UI test case" am: 3c934b2859 am: 80a69cb5e0

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1510917

Change-Id: Iaa5acc6cfdd34acf82c0b20b6016f30963c7b737
This commit is contained in:
Bonian Chen
2020-11-26 08:40:08 +00:00
committed by Automerger Merge Worker
2 changed files with 32 additions and 7 deletions

View File

@@ -57,8 +57,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
private boolean mShow5gLimitedDialog; private boolean mShow5gLimitedDialog;
boolean mIsNrEnabledFromCarrierConfig; boolean mIsNrEnabledFromCarrierConfig;
private boolean mHas5gCapability; private boolean mHas5gCapability;
@VisibleForTesting private Integer mCallState;
Integer mCallState;
private final List<On4gLteUpdateListener> m4gLteListeners; private final List<On4gLteUpdateListener> m4gLteListeners;
protected static final int MODE_NONE = -1; protected static final int MODE_NONE = -1;
@@ -199,8 +198,13 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
return new VolteQueryImsState(mContext, subId); return new VolteQueryImsState(mContext, subId);
} }
@VisibleForTesting
boolean isCallStateIdle() {
return (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE);
}
private boolean isUserControlAllowed(final PersistableBundle carrierConfig) { private boolean isUserControlAllowed(final PersistableBundle carrierConfig) {
return (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE) return isCallStateIdle()
&& (carrierConfig != null) && (carrierConfig != null)
&& carrierConfig.getBoolean( && carrierConfig.getBoolean(
CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL); CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL);

View File

@@ -79,6 +79,9 @@ public class Enhanced4gBasePreferenceControllerTest {
mCarrierConfig = new PersistableBundle(); mCarrierConfig = new PersistableBundle();
doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL, false);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL, true);
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
mQueryImsState = spy(new MockVolteQueryImsState(mContext, SUB_ID)); mQueryImsState = spy(new MockVolteQueryImsState(mContext, SUB_ID));
mQueryImsState.setEnabledByPlatform(true); mQueryImsState.setEnabledByPlatform(true);
@@ -91,6 +94,8 @@ public class Enhanced4gBasePreferenceControllerTest {
mController = spy(new Enhanced4gLtePreferenceController(mContext, "VoLTE")); mController = spy(new Enhanced4gLtePreferenceController(mContext, "VoLTE"));
mController.init(SUB_ID); mController.init(SUB_ID);
doReturn(mQueryImsState).when(mController).queryImsState(anyInt()); doReturn(mQueryImsState).when(mController).queryImsState(anyInt());
doReturn(true).when(mController).isCallStateIdle();
doReturn(1).when(mController).getMode();
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
} }
@@ -105,6 +110,16 @@ public class Enhanced4gBasePreferenceControllerTest {
BasePreferenceController.CONDITIONALLY_UNAVAILABLE); BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
} }
@Test
public void getAvailabilityStatus_modeMismatch_returnUnavailable() {
doReturn(2).when(mController).getMode();
mController.init(SUB_ID);
assertThat(mController.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
}
@Test @Test
public void getAvailabilityStatus_volteDisabled_returnUnavailable() { public void getAvailabilityStatus_volteDisabled_returnUnavailable() {
mQueryImsState.setEnabledByPlatform(false); mQueryImsState.setEnabledByPlatform(false);
@@ -115,17 +130,23 @@ public class Enhanced4gBasePreferenceControllerTest {
@Test @Test
public void updateState_configEnabled_prefEnabled() { public void updateState_configEnabled_prefEnabled() {
mQueryImsState.setIsEnabledByUser(true);
mPreference.setEnabled(false); mPreference.setEnabled(false);
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
mController.mCallState = TelephonyManager.CALL_STATE_IDLE;
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL, true);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.isEnabled()).isTrue();
} }
@Test
public void updateState_callStateNotIdle_prefDisabled() {
doReturn(false).when(mController).isCallStateIdle();
mPreference.setEnabled(true);
mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isFalse();
}
@Test @Test
public void updateState_configOn_prefChecked() { public void updateState_configOn_prefChecked() {
mQueryImsState.setIsEnabledByUser(true); mQueryImsState.setIsEnabledByUser(true);