From 92eb42c69e17532488742c62fdc0390cfd5d0fcc Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 22 Aug 2019 17:13:06 +0800 Subject: [PATCH] [Settings] hide preferred network mode UI Hide preferred network mode UI no matter home, roaming or no service when KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL been enabled. Bug: 137681413 Test: atest PreferredNetworkModePreferenceControllerTest atest EnabledNetworkModePreferenceControllerTest Manual with AT&T SIM card in out of servce and in service Change-Id: Ia0d1333c6cbae3a3717c8db6b77fbb9ea8cec968 Merged-In: Ia0d1333c6cbae3a3717c8db6b77fbb9ea8cec968 --- .../EnabledNetworkModePreferenceController.java | 10 +++------ .../PreferredNetworkModePreferenceController.java | 10 +++------ ...EnabledNetworkModePreferenceControllerTest.java | 24 ++++++++++++++++++++++ ...eferredNetworkModePreferenceControllerTest.java | 24 ++++++++++++++++++++++ 4 files changed, 54 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 79cdc2e6b6..7d53e221a0 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -81,13 +81,9 @@ public class EnabledNetworkModePreferenceController extends } else if (carrierConfig == null) { visible = false; } else if (carrierConfig.getBoolean( - CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) { - visible = false; - } else if (carrierConfig.getBoolean( - CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL) - && !telephonyManager.getServiceState().getRoaming() - && telephonyManager.getServiceState().getDataRegState() - == ServiceState.STATE_IN_SERVICE) { + CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL) + || carrierConfig.getBoolean( + CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)) { visible = false; } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) { visible = false; diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java index 294f05f2ae..7b24a936d1 100644 --- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java @@ -58,13 +58,9 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe } else if (carrierConfig == null) { visible = false; } else if (carrierConfig.getBoolean( - CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) { - visible = false; - } else if (carrierConfig.getBoolean( - CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL) - && !telephonyManager.getServiceState().getRoaming() - && telephonyManager.getServiceState().getDataRegState() - == ServiceState.STATE_IN_SERVICE) { + CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL) + || carrierConfig.getBoolean( + CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)) { visible = false; } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) { visible = true; diff --git a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java index 6a12afd1e5..a4d708e689 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java @@ -29,12 +29,14 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; import android.content.Context; import android.net.Uri; import android.os.PersistableBundle; import android.provider.Settings; import android.telephony.CarrierConfigManager; +import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -64,6 +66,8 @@ public class EnabledNetworkModePreferenceControllerTest { private TelephonyManager mInvalidTelephonyManager; @Mock private CarrierConfigManager mCarrierConfigManager; + @Mock + private ServiceState mServiceState; private PersistableBundle mPersistableBundle; private EnabledNetworkModePreferenceController mController; @@ -85,6 +89,7 @@ public class EnabledNetworkModePreferenceControllerTest { doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId( SubscriptionManager.INVALID_SUBSCRIPTION_ID); doReturn(mContext).when(mContext).createPackageContext(anyString(), anyInt()); + doReturn(mServiceState).when(mTelephonyManager).getServiceState(); mPersistableBundle = new PersistableBundle(); doReturn(mPersistableBundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); @@ -105,6 +110,25 @@ public class EnabledNetworkModePreferenceControllerTest { } @Test + public void getAvailabilityStatus_hidePreferredNetworkType_returnUnavailable() { + mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL, + true); + + when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + + when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_IN_SERVICE); + + when(mServiceState.getRoaming()).thenReturn(false); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + + when(mServiceState.getRoaming()).thenReturn(true); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + } + + @Test public void getAvailabilityStatus_notWorldPhone_returnAvailable() { mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, false); diff --git a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java index 6807ab67f0..9c033897f7 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java @@ -23,11 +23,13 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; import android.content.Context; import android.os.PersistableBundle; import android.provider.Settings; import android.telephony.CarrierConfigManager; +import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -54,6 +56,8 @@ public class PreferredNetworkModePreferenceControllerTest { private TelephonyManager mInvalidTelephonyManager; @Mock private CarrierConfigManager mCarrierConfigManager; + @Mock + private ServiceState mServiceState; private PersistableBundle mPersistableBundle; private PreferredNetworkModePreferenceController mController; @@ -71,6 +75,7 @@ public class PreferredNetworkModePreferenceControllerTest { doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID); doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId( SubscriptionManager.INVALID_SUBSCRIPTION_ID); + doReturn(mServiceState).when(mTelephonyManager).getServiceState(); mPersistableBundle = new PersistableBundle(); doReturn(mPersistableBundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); @@ -100,6 +105,25 @@ public class PreferredNetworkModePreferenceControllerTest { } @Test + public void getAvailabilityStatus_hidePreferredNetworkType_returnUnavailable() { + mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL, + true); + + when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + + when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); + when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_IN_SERVICE); + + when(mServiceState.getRoaming()).thenReturn(false); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + + when(mServiceState.getRoaming()).thenReturn(true); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + } + + @Test public void updateState_updateByNetworkMode() { Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, -- 2.11.0