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

Commit fc69b02c authored by Bonian Chen's avatar Bonian Chen Committed by Automerger Merge Worker
Browse files

Merge "[Settings] Add voice call status and VoLTE mode detection into VoLTE UI...

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

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

Change-Id: Iaa5acc6cfdd34acf82c0b20b6016f30963c7b737
parents b03d666b 80a69cb5
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);