Loading src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +7 −5 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private boolean mValidListener = false; private boolean mEditableWfcMode = true; private boolean mEditableWfcRoamingMode = true; private boolean mUseWfcHomeModeForRoaming = false; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private ImsManager mImsManager; Loading Loading @@ -312,6 +313,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL); mEditableWfcRoamingMode = b.getBoolean( CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL); mUseWfcHomeModeForRoaming = b.getBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false); isWifiOnlySupported = b.getBoolean( CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, true); } Loading Loading @@ -496,7 +500,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment // Don't show WFC (home) preference if it's not editable. preferenceScreen.removePreference(mButtonWfcMode); } if (mEditableWfcRoamingMode) { if (mEditableWfcRoamingMode && !mUseWfcHomeModeForRoaming) { preferenceScreen.addPreference(mButtonWfcRoamingMode); } else { // Don't show WFC roaming preference if it's not editable. Loading Loading @@ -525,10 +529,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mImsManager.setWfcMode(buttonMode, false); mButtonWfcMode.setSummary(getWfcModeSummary(buttonMode)); mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode); } if (!mEditableWfcRoamingMode) { int currentWfcRoamingMode = mImsManager.getWfcMode(true); if (buttonMode != currentWfcRoamingMode) { if (mUseWfcHomeModeForRoaming) { mImsManager.setWfcMode(buttonMode, true); // mButtonWfcRoamingMode.setSummary is not needed; summary is selected value } Loading tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +127 −2 Original line number Diff line number Diff line Loading @@ -19,18 +19,23 @@ package com.android.settings.wifi.calling; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.ims.ProvisioningManager; import android.view.View; import android.widget.TextView; Loading @@ -54,17 +59,23 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class) @Config(shadows = SettingsShadowResources.SettingsShadowTheme.class) public class WifiCallingSettingsForSubTest { private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode"; private TestFragment mFragment; private Context mContext; private TextView mEmptyView; private final PersistableBundle mBundle = new PersistableBundle(); @Mock private static CarrierConfigManager sCarrierConfigManager; @Mock private ImsManager mImsManager; @Mock private PreferenceScreen mPreferenceScreen; @Mock private SettingsActivity mActivity; Loading @@ -72,6 +83,8 @@ public class WifiCallingSettingsForSubTest { @Mock private ToggleSwitch mToggleSwitch; @Mock private View mView; @Mock private ImsConfig mImsConfig; @Mock private ListPreference mButtonWfcMode; @Mock private ListPreference mButtonWfcRoamingMode; @Before public void setUp() throws NoSuchFieldException, ImsException { Loading @@ -90,6 +103,8 @@ public class WifiCallingSettingsForSubTest { when(mFragment.getArguments()).thenReturn(bundle); doNothing().when(mFragment).addPreferencesFromResource(anyInt()); doReturn(mock(ListPreference.class)).when(mFragment).findPreference(any()); doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE); doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE); doNothing().when(mFragment).finish(); doReturn(mView).when(mFragment).getView(); Loading @@ -102,12 +117,26 @@ public class WifiCallingSettingsForSubTest { doReturn(mImsManager).when(mFragment).getImsManager(); doReturn(mImsConfig).when(mImsManager).getConfigInterface(); doReturn(true).when(mImsManager).isWfcProvisionedOnDevice(); doReturn(true).when(mImsManager).isWfcEnabledByUser(); doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED) .when(mImsManager).getWfcMode(anyBoolean()); doReturn(mBundle).when(sCarrierConfigManager).getConfigForSubId(anyInt()); setDefaultCarrierConfigValues(); mFragment.onAttach(mContext); mFragment.onCreate(null); mFragment.onActivityCreated(null); } private void setDefaultCarrierConfigValues() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, true); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, true); } @Test public void getHelpResource_shouldReturn0() { assertThat(mFragment.getHelpResource()).isEqualTo(0); Loading Loading @@ -143,10 +172,106 @@ public class WifiCallingSettingsForSubTest { verify(mImsConfig).removeConfigCallback(any()); } @Test public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is shown. verify(mPreferenceScreen, times(1)).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, never()).removePreference(mButtonWfcRoamingMode); } @Test public void onResume_useWfcHomeModeConfigTrueAndEditable_shouldHideWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, true); // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is hidden. verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode); } @Test public void onResume_useWfcHomeModeConfigFalseAndNotEditable_shouldHideWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false); // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is hidden. verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode); } @Test public void onResume_useWfcHomeModeConfigTrueAndNotEditable_shouldHideWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false); // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is hidden. verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode); } @Test public void onPreferenceChange_useWfcHomeModeConfigFalse_shouldNotSetWfcRoaming() { // Call onResume to update carrier config values. mFragment.onResume(); // Set the WFC home mode. mFragment.onPreferenceChange(mButtonWfcMode, String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)); // Check that only WFC home mode is set. verify(mImsManager, times(1)).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(false)); verify(mImsManager, never()).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(true)); } @Test public void onPreferenceChange_useWfcHomeModeConfigTrue_shouldSetWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true); // Call onResume to update carrier config values. mFragment.onResume(); // Set the WFC home mode. mFragment.onPreferenceChange(mButtonWfcMode, String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)); // Check that both WFC home mode and roaming mode are set. verify(mImsManager, times(1)).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(false)); verify(mImsManager, times(1)).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(true)); } protected static class TestFragment extends WifiCallingSettingsForSub { @Override protected Object getSystemService(final String name) { switch (name) { case Context.CARRIER_CONFIG_SERVICE: return sCarrierConfigManager; default: return null; } } } } Loading
src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +7 −5 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private boolean mValidListener = false; private boolean mEditableWfcMode = true; private boolean mEditableWfcRoamingMode = true; private boolean mUseWfcHomeModeForRoaming = false; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private ImsManager mImsManager; Loading Loading @@ -312,6 +313,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL); mEditableWfcRoamingMode = b.getBoolean( CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL); mUseWfcHomeModeForRoaming = b.getBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false); isWifiOnlySupported = b.getBoolean( CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, true); } Loading Loading @@ -496,7 +500,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment // Don't show WFC (home) preference if it's not editable. preferenceScreen.removePreference(mButtonWfcMode); } if (mEditableWfcRoamingMode) { if (mEditableWfcRoamingMode && !mUseWfcHomeModeForRoaming) { preferenceScreen.addPreference(mButtonWfcRoamingMode); } else { // Don't show WFC roaming preference if it's not editable. Loading Loading @@ -525,10 +529,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mImsManager.setWfcMode(buttonMode, false); mButtonWfcMode.setSummary(getWfcModeSummary(buttonMode)); mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode); } if (!mEditableWfcRoamingMode) { int currentWfcRoamingMode = mImsManager.getWfcMode(true); if (buttonMode != currentWfcRoamingMode) { if (mUseWfcHomeModeForRoaming) { mImsManager.setWfcMode(buttonMode, true); // mButtonWfcRoamingMode.setSummary is not needed; summary is selected value } Loading
tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +127 −2 Original line number Diff line number Diff line Loading @@ -19,18 +19,23 @@ package com.android.settings.wifi.calling; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.ims.ProvisioningManager; import android.view.View; import android.widget.TextView; Loading @@ -54,17 +59,23 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class) @Config(shadows = SettingsShadowResources.SettingsShadowTheme.class) public class WifiCallingSettingsForSubTest { private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode"; private TestFragment mFragment; private Context mContext; private TextView mEmptyView; private final PersistableBundle mBundle = new PersistableBundle(); @Mock private static CarrierConfigManager sCarrierConfigManager; @Mock private ImsManager mImsManager; @Mock private PreferenceScreen mPreferenceScreen; @Mock private SettingsActivity mActivity; Loading @@ -72,6 +83,8 @@ public class WifiCallingSettingsForSubTest { @Mock private ToggleSwitch mToggleSwitch; @Mock private View mView; @Mock private ImsConfig mImsConfig; @Mock private ListPreference mButtonWfcMode; @Mock private ListPreference mButtonWfcRoamingMode; @Before public void setUp() throws NoSuchFieldException, ImsException { Loading @@ -90,6 +103,8 @@ public class WifiCallingSettingsForSubTest { when(mFragment.getArguments()).thenReturn(bundle); doNothing().when(mFragment).addPreferencesFromResource(anyInt()); doReturn(mock(ListPreference.class)).when(mFragment).findPreference(any()); doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE); doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE); doNothing().when(mFragment).finish(); doReturn(mView).when(mFragment).getView(); Loading @@ -102,12 +117,26 @@ public class WifiCallingSettingsForSubTest { doReturn(mImsManager).when(mFragment).getImsManager(); doReturn(mImsConfig).when(mImsManager).getConfigInterface(); doReturn(true).when(mImsManager).isWfcProvisionedOnDevice(); doReturn(true).when(mImsManager).isWfcEnabledByUser(); doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED) .when(mImsManager).getWfcMode(anyBoolean()); doReturn(mBundle).when(sCarrierConfigManager).getConfigForSubId(anyInt()); setDefaultCarrierConfigValues(); mFragment.onAttach(mContext); mFragment.onCreate(null); mFragment.onActivityCreated(null); } private void setDefaultCarrierConfigValues() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, true); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, true); } @Test public void getHelpResource_shouldReturn0() { assertThat(mFragment.getHelpResource()).isEqualTo(0); Loading Loading @@ -143,10 +172,106 @@ public class WifiCallingSettingsForSubTest { verify(mImsConfig).removeConfigCallback(any()); } @Test public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is shown. verify(mPreferenceScreen, times(1)).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, never()).removePreference(mButtonWfcRoamingMode); } @Test public void onResume_useWfcHomeModeConfigTrueAndEditable_shouldHideWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, true); // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is hidden. verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode); } @Test public void onResume_useWfcHomeModeConfigFalseAndNotEditable_shouldHideWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false); // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is hidden. verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode); } @Test public void onResume_useWfcHomeModeConfigTrueAndNotEditable_shouldHideWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true); mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false); // Call onResume to update the WFC roaming preference. mFragment.onResume(); // Check that WFC roaming preference is hidden. verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode); } @Test public void onPreferenceChange_useWfcHomeModeConfigFalse_shouldNotSetWfcRoaming() { // Call onResume to update carrier config values. mFragment.onResume(); // Set the WFC home mode. mFragment.onPreferenceChange(mButtonWfcMode, String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)); // Check that only WFC home mode is set. verify(mImsManager, times(1)).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(false)); verify(mImsManager, never()).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(true)); } @Test public void onPreferenceChange_useWfcHomeModeConfigTrue_shouldSetWfcRoaming() { mBundle.putBoolean( CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, true); // Call onResume to update carrier config values. mFragment.onResume(); // Set the WFC home mode. mFragment.onPreferenceChange(mButtonWfcMode, String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)); // Check that both WFC home mode and roaming mode are set. verify(mImsManager, times(1)).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(false)); verify(mImsManager, times(1)).setWfcMode( eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED), eq(true)); } protected static class TestFragment extends WifiCallingSettingsForSub { @Override protected Object getSystemService(final String name) { switch (name) { case Context.CARRIER_CONFIG_SERVICE: return sCarrierConfigManager; default: return null; } } } }