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