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

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

Merge "[Settings] Apply WifiCallingQueryImsState" into rvc-dev am: 54002ca1 am: d2fe2c99

Change-Id: I00de70493614a84c4cca7c3bbeb633bc4a96b1c3
parents 92514b98 d2fe2c99
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -27,10 +27,6 @@ import android.util.Log;

import androidx.annotation.VisibleForTesting;

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

/**
 * Controller class for querying Wifi calling status
 */
@@ -66,12 +62,6 @@ public class WifiCallingQueryImsState extends ImsQueryController {
        return (new ImsQueryWfcUserSetting(subId)).query();
    }

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

    /**
     * Check whether Wifi Calling is a supported feature on this subscription
     *
@@ -107,8 +97,15 @@ public class WifiCallingQueryImsState extends ImsQueryController {
        if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
            return false;
        }
        return isWifiCallingProvisioned()
                && MobileNetworkUtils.isImsServiceStateReady(getImsManager(mSubId));
        if (!isWifiCallingProvisioned()) {
            return false;
        }
        try {
            return isServiceStateReady(mSubId);
        } catch (InterruptedException | IllegalArgumentException | ImsException exception) {
            Log.w(LOG_TAG, "fail to get WFC service status. subId=" + mSubId, exception);
        }
        return false;
    }

    /**
+1 −13
Original line number Diff line number Diff line
@@ -54,9 +54,7 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.ims.WifiCallingQueryImsState;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.widget.SwitchBar;

/**
@@ -100,7 +98,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
    private boolean mUseWfcHomeModeForRoaming = false;

    private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private com.android.ims.ImsManager mImsManager;
    private ImsMmTelManager mImsMmTelManager;
    private ProvisioningManager mProvisioningManager;
    private TelephonyManager mTelephonyManager;
@@ -270,12 +267,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
        return ProvisioningManager.createForSubscriptionId(mSubId);
    }

    @VisibleForTesting
    com.android.ims.ImsManager getImsManager() {
        return com.android.ims.ImsManager.getInstance(getActivity(),
                SubscriptionUtil.getPhoneId(getActivity(), mSubId));
    }

    @VisibleForTesting
    ImsMmTelManager getImsMmTelManager() {
        if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
@@ -299,12 +290,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
                    FRAGMENT_BUNDLE_SUBID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
        }

        mImsManager = getImsManager();
        mProvisioningManager = getImsProvisioningManager();
        mImsMmTelManager = getImsMmTelManager();

        mTelephonyManager = getActivity().getSystemService(TelephonyManager.class);

        mButtonWfcMode = findPreference(BUTTON_WFC_MODE);
        mButtonWfcMode.setOnPreferenceChangeListener(this);

@@ -341,7 +329,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment

    @VisibleForTesting
    boolean isWfcProvisionedOnDevice() {
        return MobileNetworkUtils.isWfcProvisionedOnDevice(mSubId);
        return queryImsState(mSubId).isWifiCallingProvisioned();
    }

    private void updateBody() {
+2 −8
Original line number Diff line number Diff line
@@ -19,10 +19,8 @@ package com.android.settings.wifi.calling;
import android.content.Context;
import android.telephony.SubscriptionManager;

import com.android.ims.ImsManager;
import com.android.settings.SettingsActivity;
import com.android.settings.network.ims.WifiCallingQueryImsState;
import com.android.settings.network.telephony.MobileNetworkUtils;

public class WifiCallingSuggestionActivity extends SettingsActivity {

@@ -30,11 +28,7 @@ public class WifiCallingSuggestionActivity extends SettingsActivity {
        final WifiCallingQueryImsState queryState =
                new WifiCallingQueryImsState(context,
                SubscriptionManager.getDefaultVoiceSubscriptionId());
        if (!ImsManager.isWfcEnabledByPlatform(context) ||
                !MobileNetworkUtils.isWfcProvisionedOnDevice(
                        SubscriptionManager.getDefaultVoiceSubscriptionId())) {
            return true;
        }
        return queryState.isEnabledByUser() && queryState.isAllowUserControl();
        return (!queryState.isWifiCallingProvisioned())
                || (queryState.isEnabledByUser() && queryState.isAllowUserControl());
    }
}
+14 −7
Original line number Diff line number Diff line
@@ -19,9 +19,6 @@ package com.android.settings.network.ims;
import android.content.Context;
import android.telephony.ims.ImsException;

import com.android.ims.ImsManager;


/**
 * Controller class for mock Wifi calling status
 */
@@ -30,6 +27,7 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState {
    private Boolean mIsTtyOnVolteEnabled;
    private Boolean mIsEnabledOnPlatform;
    private Boolean mIsProvisionedOnDevice;
    private Boolean mIsServiceStateReady;
    private Boolean mIsEnabledByUser;

    /**
@@ -42,10 +40,6 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState {
        super(context, subId);
    }

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

    public void setIsTtyOnVolteEnabled(boolean enabled) {
        mIsTtyOnVolteEnabled = enabled;
    }
@@ -84,6 +78,19 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState {
        return super.isProvisionedOnDevice(subId);
    }

    public void setServiceStateReady(boolean isReady) {
        mIsServiceStateReady = isReady;
    }

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

    public void setIsEnabledByUser(boolean enabled) {
        mIsEnabledByUser = enabled;
    }
+5 −9
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import android.telephony.ims.ImsMmTelManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.ims.ImsManager;
import com.android.internal.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.ims.MockWifiCallingQueryImsState;
@@ -60,8 +59,6 @@ public class WifiCallingPreferenceControllerTest {
    @Mock
    private TelephonyManager mTelephonyManager;
    @Mock
    private ImsManager mImsManager;
    @Mock
    private ImsMmTelManager mImsMmTelManager;
    @Mock
    private PreferenceScreen mPreferenceScreen;
@@ -79,9 +76,8 @@ public class WifiCallingPreferenceControllerTest {

        mContext = spy(RuntimeEnvironment.application);

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

        mPreference = new Preference(mContext);
@@ -109,7 +105,7 @@ public class WifiCallingPreferenceControllerTest {
    @Test
    public void updateState_noSimCallManager_setCorrectSummary() {
        mController.mSimCallManager = null;
        doReturn(true).when(mQueryImsState).isEnabledByUser();
        mQueryImsState.setIsEnabledByUser(true);
        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
                ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
@@ -149,7 +145,7 @@ public class WifiCallingPreferenceControllerTest {
                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
        doReturn(true).when(mQueryImsState).isEnabledByUser();
        mQueryImsState.setIsEnabledByUser(true);
        when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);

        mController.updateState(mPreference);
@@ -166,7 +162,7 @@ public class WifiCallingPreferenceControllerTest {
                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
        doReturn(true).when(mQueryImsState).isEnabledByUser();
        mQueryImsState.setIsEnabledByUser(true);
        when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);

        mController.updateState(mPreference);
Loading