Sync the wfc roaming logic with Settings

Bug: 131390505
Test: Build
Change-Id: I487386c685f4697faaee1c0447996cc103555ebf
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 0cb93aa..13c884e 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -352,6 +352,15 @@
                 .createForSubscriptionId(mPhone.getSubId());
         PersistableBundle carrierConfig =
                 PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+        boolean editableWfcRoamingMode = true;
+        boolean useWfcHomeModeForRoaming = false;
+        if (carrierConfig != null) {
+            editableWfcRoamingMode = carrierConfig.getBoolean(
+                    CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL);
+            useWfcHomeModeForRoaming = carrierConfig.getBoolean(
+                    CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL,
+                    false);
+        }
         if (mImsMgr.isVtEnabledByPlatform() && mImsMgr.isVtProvisionedOnDevice()
                 && (carrierConfig.getBoolean(
                         CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
@@ -394,7 +403,8 @@
             int resId = com.android.internal.R.string.wifi_calling_off_summary;
             if (mImsMgr.isWfcEnabledByUser()) {
                 boolean isRoaming = telephonyManager.isNetworkRoaming();
-                int wfcMode = mImsMgr.getWfcMode(isRoaming);
+                boolean wfcRoamingEnabled = editableWfcRoamingMode && !useWfcHomeModeForRoaming;
+                int wfcMode = mImsMgr.getWfcMode(isRoaming && wfcRoamingEnabled);
                 switch (wfcMode) {
                     case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
                         resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;