diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java index 4d4d3ef7f01..59984837224 100644 --- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java @@ -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 { diff --git a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java index 42422f9e8e5..57541af3708 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java @@ -127,10 +127,10 @@ public class WifiCallingPreferenceControllerTest { } @Test - public void updateState_wfcNonRoaming() { + public void updateState_wfcNonRoamingByConfig() { 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_wfcRoamingByConfig() { 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(