From b731e6309659843f6c5510dd6c2061062705370b Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Fri, 17 Nov 2023 15:15:16 +0800 Subject: [PATCH] Check isSimHardwareVisible earlier In SimEidPreferenceController, to reduce flaky on no SIM devices. Bug: 304560734 Test: manual - on "About phone / tablet" page Test: unit test (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:8b7e6c28bcef0788b4fc637af16dcaef32a16c14) Merged-In: I07ae9b785d0fbe24a866883080a466a2110ca68f Change-Id: I07ae9b785d0fbe24a866883080a466a2110ca68f --- .../simstatus/SimEidPreferenceController.kt | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.kt b/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.kt index a390a275c0b..996f31fe6ff 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.kt +++ b/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.kt @@ -59,11 +59,13 @@ class SimEidPreferenceController(context: Context, preferenceKey: String) : } /** - * Returns available here, but UI availability is retrieved asynchronously later. + * Returns available here, if SIM hardware is visible. * - * Check [updateNonIndexableKeys] for search availability. + * Also check [getIsAvailableAndUpdateEid] for other availability check which retrieved + * asynchronously later. */ - override fun getAvailabilityStatus() = AVAILABLE + override fun getAvailabilityStatus() = + if (SubscriptionUtil.isSimHardwareVisible(mContext)) AVAILABLE else UNSUPPORTED_ON_DEVICE override fun displayPreference(screen: PreferenceScreen) { super.displayPreference(screen) @@ -95,12 +97,7 @@ class SimEidPreferenceController(context: Context, preferenceKey: String) : } private fun getIsAvailableAndUpdateEid(): Boolean { - if (!SubscriptionUtil.isSimHardwareVisible(mContext) || - !mContext.userManager.isAdminUser || - Utils.isWifiOnly(mContext) - ) { - return false - } + if (!mContext.userManager.isAdminUser || Utils.isWifiOnly(mContext)) return false eid = eidStatus?.eid ?: "" return eid.isNotEmpty() } @@ -147,8 +144,8 @@ class SimEidPreferenceController(context: Context, preferenceKey: String) : } override fun updateNonIndexableKeys(keys: MutableList) { - if (!getIsAvailableAndUpdateEid()) { - keys.add(preferenceKey) + if (!isAvailable() || !getIsAvailableAndUpdateEid()) { + keys += preferenceKey } }