[Settings] Add voice call status and VoLTE mode detection into VoLTE UI test case

1. VoLTE UI should gray out during voice call.
2. UI should be invisible when VoLTE mode mismatch.

Bug: 172781455
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest
Change-Id: I8b6a212dc727f1ab78f4dd280cb41966b7054180
This commit is contained in:
Bonian Chen
2020-11-09 12:49:35 +08:00
parent 60d3e5ec63
commit 227329b2f7
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);