Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9769677a authored by Bonian Chen's avatar Bonian Chen
Browse files

[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 227329b2)
Change-Id: I1bd239b6434038323a0689e2bc3bf05182bfcd45
parent e763da58
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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);
+25 −4
Original line number Diff line number Diff line
@@ -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);