OSDN Git Service

[Settings] hide preferred network mode UI
authorBonian Chen <bonianchen@google.com>
Thu, 22 Aug 2019 09:13:06 +0000 (17:13 +0800)
committerSongFerng Wang <songferngwang@google.com>
Mon, 14 Oct 2019 05:00:52 +0000 (05:00 +0000)
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

src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java

index 79cdc2e..7d53e22 100644 (file)
@@ -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;
index 294f05f..7b24a93 100644 (file)
@@ -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;
index 6a12afd..a4d708e 100644 (file)
@@ -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);
index 6807ab6..9c03389 100644 (file)
@@ -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,