[Settings][Back port] configuration for hidding SIM remove UI

Hide SIM remove UI based on configuraion.

Bug: 240515161
Test: test cases and local testing
Merged-In: Iea40b89733cc75a41f960fecb2ac24177a4cbd3d
Change-Id: I866b2dd566ffa9953f2a83aa3dcb32440390898a
This commit is contained in:
Bonian Chen
2022-10-24 02:03:20 +00:00
parent 24dd061bba
commit f6114d3f83
5 changed files with 20 additions and 3 deletions

View File

@@ -37,6 +37,7 @@
<Preference <Preference
android:key="erase_euicc_data" android:key="erase_euicc_data"
android:title="@string/reset_esim_title" android:title="@string/reset_esim_title"
settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.network.EraseEuiccDataController" /> settings:controller="com.android.settings.network.EraseEuiccDataController" />
<!-- Factory reset --> <!-- Factory reset -->

View File

@@ -64,6 +64,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper; import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern; import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -381,6 +382,14 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis
mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(this); mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(this);
} }
/**
* Whether to show any UI which is SIM related.
*/
@VisibleForTesting
boolean showAnySubscriptionInfo(Context context) {
return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
}
/** /**
* Whether to show strings indicating that the eUICC will be wiped. * Whether to show strings indicating that the eUICC will be wiped.
* *
@@ -390,7 +399,7 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis
@VisibleForTesting @VisibleForTesting
boolean showWipeEuicc() { boolean showWipeEuicc() {
Context context = getContext(); Context context = getContext();
if (!isEuiccEnabled(context)) { if (!showAnySubscriptionInfo(context) || !isEuiccEnabled(context)) {
return false; return false;
} }
ContentResolver cr = context.getContentResolver(); ContentResolver cr = context.getContentResolver();

View File

@@ -239,6 +239,9 @@ public class ResetNetwork extends InstrumentedFragment {
} }
private List<SubscriptionInfo> getActiveSubscriptionInfoList() { private List<SubscriptionInfo> getActiveSubscriptionInfoList() {
if (!SubscriptionUtil.isSimHardwareVisible(getActivity())) {
return Collections.emptyList();
}
SubscriptionManager mgr = getActivity().getSystemService(SubscriptionManager.class); SubscriptionManager mgr = getActivity().getSystemService(SubscriptionManager.class);
if (mgr == null) { if (mgr == null) {
Log.w(TAG, "No SubscriptionManager"); Log.w(TAG, "No SubscriptionManager");

View File

@@ -51,7 +51,8 @@ public class EraseEuiccDataController extends BasePreferenceController {
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return mContext.getPackageManager().hasSystemFeature( return SubscriptionUtil.isSimHardwareVisible(mContext) &&
mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_TELEPHONY_EUICC) ? AVAILABLE_UNSEARCHABLE PackageManager.FEATURE_TELEPHONY_EUICC) ? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE; : UNSUPPORTED_ON_DEVICE;
} }

View File

@@ -102,7 +102,10 @@ public class MainClearTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mMainClear = spy(new MainClear()); mMainClear = spy(new MainClear() {
@Override
boolean showAnySubscriptionInfo(Context context) { return true; }
});
mActivity = Robolectric.setupActivity(FragmentActivity.class); mActivity = Robolectric.setupActivity(FragmentActivity.class);
mShadowActivity = Shadows.shadowOf(mActivity); mShadowActivity = Shadows.shadowOf(mActivity);
UserManager userManager = mActivity.getSystemService(UserManager.class); UserManager userManager = mActivity.getSystemService(UserManager.class);