Merge "[Settings][Back port] configuration for hidding SIM provider UI" into tm-qpr-dev
diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml
index 07e797a..c9c576e 100644
--- a/res/xml/network_provider_internet.xml
+++ b/res/xml/network_provider_internet.xml
@@ -37,6 +37,7 @@
         android:icon="@drawable/ic_calls_sms"
         android:order="-20"
         android:summary="@string/summary_placeholder"
+        settings:isPreferenceVisible="@bool/config_show_sim_info"
         settings:allowDividerBelow="true"
         settings:keywords="@string/calls_and_sms"
         settings:useAdminDisabledSummary="true" />
@@ -49,6 +50,7 @@
         android:order="-15"
         settings:keywords="@string/keywords_more_mobile_networks"
         settings:userRestriction="no_config_mobile_networks"
+        settings:isPreferenceVisible="@bool/config_show_sim_info"
         settings:allowDividerAbove="true"
         settings:useAdminDisabledSummary="true" />
 
@@ -66,6 +68,7 @@
         android:persistent="false"
         android:order="19"
         settings:userRestriction="no_config_mobile_networks"
+        settings:isPreferenceVisible="@bool/config_show_sim_info"
         settings:useAdminDisabledSummary="true" />
 
     <com.android.settingslib.RestrictedPreference
diff --git a/res/xml/network_provider_settings.xml b/res/xml/network_provider_settings.xml
index 92eca76..1921ece 100644
--- a/res/xml/network_provider_settings.xml
+++ b/res/xml/network_provider_settings.xml
@@ -46,6 +46,7 @@
         android:key="provider_model_mobile_network"
         android:title="@string/summary_placeholder"
         android:layout="@layout/preference_category_no_label"
+        settings:isPreferenceVisible="@bool/config_show_sim_info"
         settings:controller="com.android.settings.network.NetworkMobileProviderController"/>
 
     <com.android.settingslib.RestrictedSwitchPreference
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index 1a85a7f..61dd079 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.java
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.java
@@ -206,7 +206,8 @@
 
     @Override
     public boolean isAvailable() {
-        return !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser();
+        return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+                !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser();
     }
 
     @Override
diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
index c8b1c49..585c99e 100644
--- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java
+++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
@@ -190,7 +190,8 @@
 
     @Override
     public boolean isAvailable() {
-        return mUserManager.isAdminUser();
+        return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+                mUserManager.isAdminUser();
     }
 
     @Override
diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java b/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java
index aad9b10..b2cf74e 100644
--- a/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java
+++ b/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java
@@ -100,7 +100,8 @@
 
                 @Override
                 protected boolean isPageSearchEnabled(Context context) {
-                    return context.getSystemService(UserManager.class).isAdminUser();
+                    return SubscriptionUtil.isSimHardwareVisible(context) &&
+                            context.getSystemService(UserManager.class).isAdminUser();
                 }
             };
 }
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index c5295e6..19ebd36 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -342,7 +342,18 @@
         }
     }
 
+    /**
+     * Whether to show any UI which is SIM related.
+     */
+    @VisibleForTesting
+    boolean showAnySubscriptionInfo(Context context) {
+        return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
+    }
+
     private void addNetworkMobileProviderController() {
+        if (!showAnySubscriptionInfo(getContext())) {
+            return;
+        }
         if (mNetworkMobileProviderController == null) {
             mNetworkMobileProviderController = new NetworkMobileProviderController(
                     getContext(), PREF_KEY_PROVIDER_MOBILE_NETWORK);
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 3589184..b347ac0 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -147,7 +147,10 @@
 
     @Before
     public void setUp() {
-        mNetworkProviderSettings = spy(new NetworkProviderSettings());
+        mNetworkProviderSettings = spy(new NetworkProviderSettings() {
+            @Override
+            boolean showAnySubscriptionInfo(Context context) { return true; }
+        });
         doReturn(mContext).when(mNetworkProviderSettings).getContext();
         doReturn(mPreferenceManager).when(mNetworkProviderSettings).getPreferenceManager();
         doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);