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
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;
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 {
}
@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;
}
@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(