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

Commit b7923f5a authored by Youming Ye's avatar Youming Ye
Browse files

Check the missing useHomeWfMode case

Bug: 133812904
Test: Build
Change-Id: If89c67c0595808a1339517c6084f1d1e23f5974b
Merged-In: If89c67c0595808a1339517c6084f1d1e23f5974b
parent 4685c785
Loading
Loading
Loading
Loading
+11 −16
Original line number Diff line number Diff line
@@ -61,16 +61,12 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
    PhoneAccountHandle mSimCallManager;
    private PhoneCallStateListener mPhoneStateListener;
    private Preference mPreference;
    private boolean mEditableWfcRoamingMode;
    private boolean mUseWfcHomeModeForRoaming;

    public WifiCallingPreferenceController(Context context, String key) {
        super(context, key);
        mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
        mTelephonyManager = context.getSystemService(TelephonyManager.class);
        mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
        mEditableWfcRoamingMode = true;
        mUseWfcHomeModeForRoaming = false;
    }

    @Override
@@ -129,9 +125,18 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
            preference.setTitle(title);
            int resId = com.android.internal.R.string.wifi_calling_off_summary;
            if (mImsManager.isWfcEnabledByUser()) {
                boolean wfcRoamingEnabled = mEditableWfcRoamingMode && !mUseWfcHomeModeForRoaming;
                boolean useWfcHomeModeForRoaming = false;
                if (mCarrierConfigManager != null) {
                    final PersistableBundle carrierConfig =
                            mCarrierConfigManager.getConfigForSubId(mSubId);
                    if (carrierConfig != null) {
                        useWfcHomeModeForRoaming = carrierConfig.getBoolean(
                                CarrierConfigManager
                                        .KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL);
                    }
                }
                final boolean isRoaming = mTelephonyManager.isNetworkRoaming();
                int wfcMode = mImsManager.getWfcMode(isRoaming && wfcRoamingEnabled);
                int wfcMode = mImsManager.getWfcMode(isRoaming && !useWfcHomeModeForRoaming);
                switch (wfcMode) {
                    case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
                        resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
@@ -159,16 +164,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
        mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
        mSimCallManager = mContext.getSystemService(TelecomManager.class)
                .getSimCallManagerForSubscription(mSubId);
        if (mCarrierConfigManager != null) {
            final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
            if (carrierConfig != null) {
                mEditableWfcRoamingMode = carrierConfig.getBoolean(
                        CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL);
                mUseWfcHomeModeForRoaming = carrierConfig.getBoolean(
                        CarrierConfigManager
                                .KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL);
            }
        }
    }

    private class PhoneCallStateListener extends PhoneStateListener {
+6 −5
Original line number Diff line number Diff line
@@ -127,10 +127,10 @@ public class WifiCallingPreferenceControllerTest {
    }

    @Test
    public void updateState_wfcNonRoaming() {
    public void updateState_nonRoaming_wfcCellularPreferred() {
        assertNull(mController.mSimCallManager);
        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false);
        // update the config value by calling init again.
        mCarrierConfig.putBoolean(
                CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true);
        mController.init(SUB_ID);
        mController.mImsManager = mImsManager;

@@ -147,9 +147,10 @@ public class WifiCallingPreferenceControllerTest {
    }

    @Test
    public void updateState_wfcRoaming() {
    public void updateState_roaming_wfcWifiPreferred() {
        assertNull(mController.mSimCallManager);

        // useWfcHomeModeForRoaming is false by default. In order to check wfc in roaming mode. We
        // need the device roaming, and not using home mode in roaming network.
        when(mImsManager.getWfcMode(true)).thenReturn(
                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
        when(mImsManager.getWfcMode(false)).thenReturn(