Merge "Check the missing useHomeWfMode case"

This commit is contained in:
TreeHugger Robot
2019-06-19 01:30:50 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 21 deletions

View File

@@ -61,16 +61,12 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
PhoneAccountHandle mSimCallManager; PhoneAccountHandle mSimCallManager;
private PhoneCallStateListener mPhoneStateListener; private PhoneCallStateListener mPhoneStateListener;
private Preference mPreference; private Preference mPreference;
private boolean mEditableWfcRoamingMode;
private boolean mUseWfcHomeModeForRoaming;
public WifiCallingPreferenceController(Context context, String key) { public WifiCallingPreferenceController(Context context, String key) {
super(context, key); super(context, key);
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
mTelephonyManager = context.getSystemService(TelephonyManager.class); mTelephonyManager = context.getSystemService(TelephonyManager.class);
mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper()); mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
mEditableWfcRoamingMode = true;
mUseWfcHomeModeForRoaming = false;
} }
@Override @Override
@@ -129,9 +125,18 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
preference.setTitle(title); preference.setTitle(title);
int resId = com.android.internal.R.string.wifi_calling_off_summary; int resId = com.android.internal.R.string.wifi_calling_off_summary;
if (mImsManager.isWfcEnabledByUser()) { 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(); final boolean isRoaming = mTelephonyManager.isNetworkRoaming();
int wfcMode = mImsManager.getWfcMode(isRoaming && wfcRoamingEnabled); int wfcMode = mImsManager.getWfcMode(isRoaming && !useWfcHomeModeForRoaming);
switch (wfcMode) { switch (wfcMode) {
case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY: case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
resId = com.android.internal.R.string.wfc_mode_wifi_only_summary; 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)); mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
mSimCallManager = mContext.getSystemService(TelecomManager.class) mSimCallManager = mContext.getSystemService(TelecomManager.class)
.getSimCallManagerForSubscription(mSubId); .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 { private class PhoneCallStateListener extends PhoneStateListener {

View File

@@ -127,10 +127,10 @@ public class WifiCallingPreferenceControllerTest {
} }
@Test @Test
public void updateState_wfcNonRoaming() { public void updateState_wfcNonRoamingByConfig() {
assertNull(mController.mSimCallManager); assertNull(mController.mSimCallManager);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false); mCarrierConfig.putBoolean(
// update the config value by calling init again. CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true);
mController.init(SUB_ID); mController.init(SUB_ID);
mController.mImsManager = mImsManager; mController.mImsManager = mImsManager;
@@ -147,9 +147,10 @@ public class WifiCallingPreferenceControllerTest {
} }
@Test @Test
public void updateState_wfcRoaming() { public void updateState_wfcRoamingByConfig() {
assertNull(mController.mSimCallManager); 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( when(mImsManager.getWfcMode(true)).thenReturn(
ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED); ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
when(mImsManager.getWfcMode(false)).thenReturn( when(mImsManager.getWfcMode(false)).thenReturn(