From 8138e44fdeb26a76c84661dc5be45fc13f8b6927 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Wed, 7 Dec 2022 04:49:16 +0000 Subject: [PATCH] [Settings] Support search of each Sim slot status within about phone Support searching of each SIM slot status within about phone page. Bug: 260540995 Test: auto and local Change-Id: If905fc595af566665fb1077a5ce11a967f7487aa --- res/values/strings.xml | 6 +- .../SimStatusPreferenceController.java | 25 +++++++++ .../SimStatusPreferenceControllerTest.java | 55 +++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index fbae24180a5..9cae3dc1541 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6530,7 +6530,11 @@ face, unlock, auth, sign in face, unlock, auth, sign in, fingerprint, biometric imei, meid, min, prl version, imei sv - network, mobile network state, service state, signal strength, mobile network type, roaming, iccid, eid + network, mobile network state, service state, signal strength, mobile network type, roaming + network, mobile network state, service state, signal strength, mobile network type, roaming, eid + network, mobile network state, service state, signal strength, mobile network type, roaming, iccid + network, mobile network state, service state, signal strength, mobile network type, roaming, iccid, eid + eid serial number, hardware version android security patch level, baseband version, kernel version diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java index b75853de788..16f04dfc60c 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java @@ -31,6 +31,7 @@ import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.Utils; +import com.android.settingslib.search.SearchIndexableRaw; import java.util.ArrayList; import java.util.List; @@ -159,4 +160,28 @@ public class SimStatusPreferenceController extends BasePreferenceController { Preference createNewPreference(Context context) { return new Preference(context); } + + @Override + public void updateDynamicRawDataToIndex(List rawData) { + int simSlot = getSimSlotIndex(); + SubscriptionInfo subInfo = getSubscriptionInfo(simSlot); + if (subInfo == null) { + /** + * Only add to search when SIM is active + * (presented in SIM Slot Status as availavle.) + */ + return; + } + + /* Have different search keywork when comes to eSIM */ + int keywordId = subInfo.isEmbedded() ? + R.string.keywords_sim_status_esim : R.string.keywords_sim_status; + + SearchIndexableRaw data = new SearchIndexableRaw(mContext); + data.key = getPreferenceKey(); + data.title = getPreferenceTitle(simSlot); + data.screenTitle = mContext.getString(R.string.about_settings); + data.keywords = mContext.getString(keywordId).toString(); + rawData.add(data); + } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java index 9d4956d6d74..eea07fe1cf8 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java @@ -16,6 +16,8 @@ package com.android.settings.deviceinfo.simstatus; +import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -26,6 +28,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; import android.os.UserManager; +import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -37,6 +40,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settingslib.search.SearchIndexableRaw; import java.util.ArrayList; import java.util.List; @@ -62,6 +66,10 @@ public class SimStatusPreferenceControllerTest { @Mock private PreferenceScreen mScreen; @Mock + private SubscriptionManager mSubscriptionManager; + @Mock + private SubscriptionInfo mSubscriptionInfo; + @Mock private TelephonyManager mTelephonyManager; @Mock private UserManager mUserManager; @@ -85,6 +93,8 @@ public class SimStatusPreferenceControllerTest { when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); mockService(Context.TELEPHONY_SERVICE, TelephonyManager.class, mTelephonyManager); + mockService(Context.TELEPHONY_SUBSCRIPTION_SERVICE, SubscriptionManager.class, + mSubscriptionManager); mockService(Context.USER_SERVICE, UserManager.class, mUserManager); final List preferencePool = new ArrayList(); @@ -96,6 +106,10 @@ public class SimStatusPreferenceControllerTest { public Preference createNewPreference(Context context) { return preferencePool.remove(0); } + @Override + public int getSimSlotIndex() { + return 0; + } }); doReturn(BasePreferenceController.AVAILABLE).when(mController).getAvailabilityStatus(); when(mScreen.getContext()).thenReturn(mContext); @@ -163,6 +177,47 @@ public class SimStatusPreferenceControllerTest { verify(mFragment).getChildFragmentManager(); } + @Test + public void updateDynamicRawDataToIndex_notAddToSearch_emptySimSlot() { + doReturn(null).when(mSubscriptionManager).getActiveSubscriptionInfoList(); + SlotSimStatus slotSimStatus = new SlotSimStatus(mContext); + List rawData = new ArrayList(); + + mController.init(mFragment, slotSimStatus); + mController.updateDynamicRawDataToIndex(rawData); + + assertThat(rawData.size()).isEqualTo(0); + } + + @Test + public void updateDynamicRawDataToIndex_addToSearch_simInSimSlot() { + doReturn(false).when(mSubscriptionInfo).isEmbedded(); + doReturn(List.of(mSubscriptionInfo)).when(mSubscriptionManager) + .getActiveSubscriptionInfoList(); + SlotSimStatus slotSimStatus = new SlotSimStatus(mContext); + List rawData = new ArrayList(); + + mController.init(mFragment, slotSimStatus); + mController.updateDynamicRawDataToIndex(rawData); + + assertThat(rawData.size()).isEqualTo(1); + } + + @Test + public void updateDynamicRawDataToIndex_addEsimToSearch_esimInSimSlot() { + doReturn(true).when(mSubscriptionInfo).isEmbedded(); + doReturn(List.of(mSubscriptionInfo)).when(mSubscriptionManager) + .getActiveSubscriptionInfoList(); + SlotSimStatus slotSimStatus = new SlotSimStatus(mContext); + List rawData = new ArrayList(); + + mController.init(mFragment, slotSimStatus); + mController.updateDynamicRawDataToIndex(rawData); + + assertThat(rawData.size()).isEqualTo(1); + assertThat(rawData.get(0).keywords.contains("eid")).isTrue(); + } + private void mockService(String serviceName, Class serviceClass, T service) { when(mContext.getSystemServiceName(serviceClass)).thenReturn(serviceName); when(mContext.getSystemService(serviceName)).thenReturn(service);