From 3be07f0e15d3f08704fecfdec13d5f1839af0e64 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Mon, 14 Nov 2022 10:24:43 +0000 Subject: [PATCH] [Settings] configuration for hidding SIM settings UI Hide SIM settings UI based on configuraion. Bug: 240515161 Test: test cases and local testing Merged-In: If1df99a79e51125d03f534cdfc9408b01c61024f Change-Id: I3d6ecec1465189429f2a3ea026d15e23357d0832 --- .../settings/network/MobileNetworkListFragment.java | 7 ++++++- .../network/telephony/MobileNetworkSettings.java | 7 ++++++- .../settings/network/telephony/MobileNetworkUtils.java | 7 +++++++ .../network/MobileNetworkListFragmentTest.java | 10 ++++++++++ .../network/telephony/MobileNetworkSettingsTest.java | 8 ++++++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/network/MobileNetworkListFragment.java b/src/com/android/settings/network/MobileNetworkListFragment.java index 7881690e106..ea7031ae132 100644 --- a/src/com/android/settings/network/MobileNetworkListFragment.java +++ b/src/com/android/settings/network/MobileNetworkListFragment.java @@ -60,6 +60,10 @@ public class MobileNetworkListFragment extends DashboardFragment { @Override protected List createPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); + if (!SubscriptionUtil.isSimHardwareVisible(getContext())) { + finish(); + return controllers; + } NetworkProviderSimsCategoryController simCategoryPrefCtrl = new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM, @@ -88,7 +92,8 @@ public class MobileNetworkListFragment extends DashboardFragment { @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/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index 94b6aaf1bcc..05e58e96ed7 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -120,6 +120,10 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { @Override protected List createPreferenceControllers(Context context) { + if (!SubscriptionUtil.isSimHardwareVisible(context)) { + finish(); + return Arrays.asList(); + } if (getArguments() == null) { Intent intent = getIntent(); if (intent != null) { @@ -398,7 +402,8 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { /** suppress full page if user is not admin */ @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/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 839a98cdb32..d44eadace08 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -261,6 +261,9 @@ public class MobileNetworkUtils { * the user has enabled development mode. */ public static boolean showEuiccSettings(Context context) { + if (!SubscriptionUtil.isSimHardwareVisible(context)) { + return false; + } long timeForAccess = SystemClock.elapsedRealtime(); try { Boolean isShow = ((Future) ThreadUtils.postOnBackgroundThread(() -> { @@ -1010,6 +1013,10 @@ public class MobileNetworkUtils { } public static void launchMobileNetworkSettings(Context context, SubscriptionInfo info) { + if (!SubscriptionUtil.isSimHardwareVisible(context)) { + Log.e(TAG, "launchMobileNetworkSettings fail, device without such UI."); + return; + } final int subId = info.getSubscriptionId(); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Log.d(TAG, "launchMobileNetworkSettings fail, subId is invalid."); diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java index fd2b520929f..2e04ea751f0 100644 --- a/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java +++ b/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java @@ -21,8 +21,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; import android.content.Context; +import android.content.res.Resources; import android.os.UserManager; +import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; import org.junit.Before; @@ -38,6 +40,8 @@ public class MobileNetworkListFragmentTest { @Mock private Context mContext; @Mock + private Resources mResources; + @Mock private UserManager mUserManager; private MobileNetworkListFragment mFragment; @@ -55,6 +59,9 @@ public class MobileNetworkListFragmentTest { final BaseSearchIndexProvider provider = (BaseSearchIndexProvider) mFragment.SEARCH_INDEX_DATA_PROVIDER; + when(mContext.getResources()).thenReturn(mResources); + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); + final Object obj = ReflectionHelpers.callInstanceMethod(provider, "isPageSearchEnabled", ReflectionHelpers.ClassParameter.from(Context.class, mContext)); final boolean isEnabled = (Boolean) obj; @@ -69,6 +76,9 @@ public class MobileNetworkListFragmentTest { final BaseSearchIndexProvider provider = (BaseSearchIndexProvider) mFragment.SEARCH_INDEX_DATA_PROVIDER; + when(mContext.getResources()).thenReturn(mResources); + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); + final Object obj = ReflectionHelpers.callInstanceMethod(provider, "isPageSearchEnabled", ReflectionHelpers.ClassParameter.from(Context.class, mContext)); final boolean isEnabled = (Boolean) obj; diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java index 44611cec616..3e219a412ce 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java @@ -29,6 +29,7 @@ import static org.mockito.Mockito.when; import android.app.Activity; import android.app.usage.NetworkStatsManager; import android.content.Context; +import android.content.res.Resources; import android.net.NetworkPolicyManager; import android.os.Bundle; import android.os.UserManager; @@ -37,6 +38,7 @@ import android.telephony.TelephonyManager; import androidx.fragment.app.FragmentActivity; +import com.android.settings.R; import com.android.settings.datausage.DataUsageSummaryPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; @@ -68,12 +70,18 @@ public class MobileNetworkSettingsTest { private FragmentActivity mActivity; private Context mContext; + private Resources mResources; private MobileNetworkSettings mFragment; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); + + mResources = spy(mContext.getResources()); + when(mContext.getResources()).thenReturn(mResources); + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); + when(mActivity.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager); when(mContext.getSystemService(NetworkStatsManager.class)).thenReturn(mNetworkStatsManager);