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

Commit fb7274a3 authored by Bonian Chen's avatar Bonian Chen
Browse files

[Settings] Replace ImsManager#isVtEnabledByPlatform()

Replace ImsManager#isVtEnabledByPlatform() by
ImsMmTelManager.isSupported().

Bug:  140542283
Test: m RunSettingsRoboTests -j
ROBOTEST_FILTER=VideoCallingPreferenceControllerTest

Change-Id: Ife5100ef288fbad6fc818e8fbdf8192c42d495b2
parent ecea1339
Loading
Loading
Loading
Loading
+2 −20
Original line number Diff line number Diff line
@@ -27,9 +27,6 @@ import android.util.Log;

import androidx.annotation.VisibleForTesting;

import com.android.ims.ImsManager;
import com.android.settings.network.SubscriptionUtil;

/**
 * Controller class for querying VT status
 */
@@ -65,12 +62,6 @@ public class VtQueryImsState extends ImsQueryController {
        return (new ImsQueryVtUserSetting(subId)).query();
    }

    @VisibleForTesting
    ImsManager getImsManager(int subId) {
        return ImsManager.getInstance(mContext,
                SubscriptionUtil.getPhoneId(mContext, subId));
    }

    /**
     * Check whether Video Call can be perform or not on this subscription
     *
@@ -81,19 +72,10 @@ public class VtQueryImsState extends ImsQueryController {
            return false;
        }

        final ImsManager imsManager = getImsManager(mSubId);
        if (imsManager == null) {
            return false;
        }

        if (!imsManager.isVtEnabledByPlatform()) {
            return false;
        }

        try {
            return isServiceStateReady(mSubId);
            return isEnabledByPlatform(mSubId) && isServiceStateReady(mSubId);
        } catch (InterruptedException | IllegalArgumentException | ImsException exception) {
            Log.w(LOG_TAG, "fail to get Vt service status. subId=" + mSubId, exception);
            Log.w(LOG_TAG, "fail to get Vt ready. subId=" + mSubId, exception);
        }
        return false;
    }
+14 −7
Original line number Diff line number Diff line
@@ -19,15 +19,13 @@ package com.android.settings.network.ims;
import android.content.Context;
import android.telephony.ims.ImsException;

import com.android.ims.ImsManager;


/**
 * Controller class for mock VT status
 */
public class MockVtQueryImsState extends VtQueryImsState {

    private Boolean mIsTtyOnVolteEnabled;
    private Boolean mIsEnabledOnPlatform;
    private Boolean mIsProvisionedOnDevice;
    private Boolean mIsEnabledByUser;
    private Boolean mIsServiceStateReady;
@@ -42,10 +40,6 @@ public class MockVtQueryImsState extends VtQueryImsState {
        super(context, subId);
    }

    public ImsManager getImsManager(int subId) {
        return super.getImsManager(subId);
    }

    public void setIsTtyOnVolteEnabled(boolean enabled) {
        mIsTtyOnVolteEnabled = enabled;
    }
@@ -58,6 +52,19 @@ public class MockVtQueryImsState extends VtQueryImsState {
        return super.isTtyOnVolteEnabled(subId);
    }

    public void setIsEnabledByPlatform(boolean isEnabled) {
        mIsEnabledOnPlatform = isEnabled;
    }

    @Override
    boolean isEnabledByPlatform(int subId) throws InterruptedException, ImsException,
            IllegalArgumentException {
        if (mIsEnabledOnPlatform != null) {
            return mIsEnabledOnPlatform;
        }
        return super.isEnabledByPlatform(subId);
    }

    public void setIsProvisionedOnDevice(boolean isProvisioned) {
        mIsProvisionedOnDevice = isProvisioned;
    }
+14 −18
Original line number Diff line number Diff line
@@ -31,9 +31,8 @@ import android.telephony.ims.ProvisioningManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.ims.ImsManager;
import com.android.settings.network.ims.MockVolteQueryImsState;
import com.android.settings.network.ims.MockVtQueryImsState;
import com.android.settings.network.ims.VolteQueryImsState;

import org.junit.Before;
import org.junit.Test;
@@ -50,8 +49,6 @@ public class VideoCallingPreferenceControllerTest {
    @Mock
    private TelephonyManager mTelephonyManager;
    @Mock
    private ImsManager mImsManager;
    @Mock
    private ProvisioningManager mProvisioningManager;
    @Mock
    private CarrierConfigManager mCarrierConfigManager;
@@ -59,7 +56,7 @@ public class VideoCallingPreferenceControllerTest {
    private PreferenceScreen mPreferenceScreen;

    private MockVtQueryImsState mQueryImsState;
    private VolteQueryImsState mQueryVoLteState;
    private MockVolteQueryImsState mQueryVoLteState;

    private VideoCallingPreferenceController mController;
    private PersistableBundle mCarrierConfig;
@@ -81,12 +78,11 @@ public class VideoCallingPreferenceControllerTest {
                CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS, true);
        doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);

        mQueryImsState = spy(new MockVtQueryImsState(mContext, SUB_ID));
        doReturn(true).when(mQueryImsState).isEnabledByUser();
        doReturn(mImsManager).when(mQueryImsState).getImsManager(anyInt());
        mQueryImsState = new MockVtQueryImsState(mContext, SUB_ID);
        mQueryImsState.setIsEnabledByUser(true);

        mQueryVoLteState = spy(new VolteQueryImsState(mContext, SUB_ID));
        doReturn(true).when(mQueryVoLteState).isEnabledByUser();
        mQueryVoLteState = new MockVolteQueryImsState(mContext, SUB_ID);
        mQueryVoLteState.setIsEnabledByUser(true);

        mPreference = new SwitchPreference(mContext);
        mController = spy(new VideoCallingPreferenceController(mContext, "wifi_calling"));
@@ -95,7 +91,7 @@ public class VideoCallingPreferenceControllerTest {
        doReturn(mQueryVoLteState).when(mController).queryVoLteState(anyInt());
        mPreference.setKey(mController.getPreferenceKey());

        doReturn(true).when(mImsManager).isVtEnabledByPlatform();
        mQueryImsState.setIsEnabledByPlatform(true);
        mQueryImsState.setIsProvisionedOnDevice(true);
        mQueryImsState.setServiceStateReady(true);
        doReturn(true).when(mTelephonyManager).isDataEnabled();
@@ -111,7 +107,7 @@ public class VideoCallingPreferenceControllerTest {
    @Test
    public void isVideoCallEnabled_disabledByPlatform_returnFalse() {
        mQueryImsState.setIsProvisionedOnDevice(false);
        doReturn(false).when(mImsManager).isVtEnabledByPlatform();
        mQueryImsState.setIsEnabledByPlatform(false);

        assertThat(mController.isVideoCallEnabled(SUB_ID)).isFalse();
    }
@@ -127,8 +123,8 @@ public class VideoCallingPreferenceControllerTest {

    @Test
    public void updateState_4gLteOff_disabled() {
        doReturn(false).when(mQueryImsState).isEnabledByUser();
        doReturn(false).when(mQueryVoLteState).isEnabledByUser();
        mQueryImsState.setIsEnabledByUser(false);
        mQueryVoLteState.setIsEnabledByUser(false);

        mController.updateState(mPreference);

@@ -138,9 +134,9 @@ public class VideoCallingPreferenceControllerTest {

    @Test
    public void updateState_4gLteOnWithoutCall_checked() {
        doReturn(true).when(mQueryImsState).isEnabledByUser();
        doReturn(true).when(mQueryVoLteState).isEnabledByUser();
        doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
        mQueryImsState.setIsEnabledByUser(true);
        mQueryVoLteState.setIsEnabledByUser(true);
        mQueryImsState.setIsTtyOnVolteEnabled(true);
        mController.mCallState = TelephonyManager.CALL_STATE_IDLE;

        mController.updateState(mPreference);
@@ -152,7 +148,7 @@ public class VideoCallingPreferenceControllerTest {

    @Test
    public void displayPreference_notAvailable_setPreferenceInvisible() {
        doReturn(false).when(mImsManager).isVtEnabledByPlatform();
        mQueryImsState.setIsEnabledByPlatform(false);

        mController.displayPreference(mPreferenceScreen);