[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
Merged-In: I8b6a212dc727f1ab78f4dd280cb41966b7054180
(cherry picked from commit 227329b2f7)
Change-Id: I1bd239b6434038323a0689e2bc3bf05182bfcd45
This commit is contained in:
Bonian Chen
2020-11-09 12:49:35 +08:00
parent e763da5884
commit 9769677a3c
2 changed files with 32 additions and 7 deletions

View File

@@ -79,6 +79,9 @@ public class Enhanced4gBasePreferenceControllerTest {
mCarrierConfig = new PersistableBundle();
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.setEnabledByPlatform(true);
@@ -91,6 +94,8 @@ public class Enhanced4gBasePreferenceControllerTest {
mController = spy(new Enhanced4gLtePreferenceController(mContext, "VoLTE"));
mController.init(SUB_ID);
doReturn(mQueryImsState).when(mController).queryImsState(anyInt());
doReturn(true).when(mController).isCallStateIdle();
doReturn(1).when(mController).getMode();
mPreference.setKey(mController.getPreferenceKey());
}
@@ -105,6 +110,16 @@ public class Enhanced4gBasePreferenceControllerTest {
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
public void getAvailabilityStatus_volteDisabled_returnUnavailable() {
mQueryImsState.setEnabledByPlatform(false);
@@ -115,17 +130,23 @@ public class Enhanced4gBasePreferenceControllerTest {
@Test
public void updateState_configEnabled_prefEnabled() {
mQueryImsState.setIsEnabledByUser(true);
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);
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
public void updateState_configOn_prefChecked() {
mQueryImsState.setIsEnabledByUser(true);