OSDN Git Service

Check the missing useHomeWfMode case
authorYouming Ye <paulye@google.com>
Thu, 1 Aug 2019 18:27:48 +0000 (11:27 -0700)
committerandroid-build-merger <android-build-merger@google.com>
Thu, 1 Aug 2019 18:27:48 +0000 (11:27 -0700)
am: b7923f5a3f

Change-Id: I81aadd772a8c8b07ca6c967868789aa91fe0dba9

src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java

index 4d4d3ef..5998483 100644 (file)
@@ -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 {
index 42422f9..f795d61 100644 (file)
@@ -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(