diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml index a415abfa9d3..818069b57a2 100644 --- a/res/xml/my_device_info.xml +++ b/res/xml/my_device_info.xml @@ -29,6 +29,8 @@ settings:isPreferenceVisible="false"/> @@ -88,6 +90,8 @@ diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java index 292196e6e52..6c32c59fee3 100644 --- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java @@ -29,6 +29,7 @@ import android.widget.Toast; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; @@ -40,7 +41,8 @@ import java.util.List; public class PhoneNumberPreferenceController extends BasePreferenceController { - private final static String KEY_PHONE_NUMBER = "phone_number"; + private static final String KEY_PHONE_NUMBER = "phone_number"; + private static final String KEY_PREFERENCE_CATEGORY = "basic_info_category"; private final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; @@ -66,6 +68,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); final Preference preference = screen.findPreference(getPreferenceKey()); + final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY); mPreferenceList.add(preference); final int phonePreferenceOrder = preference.getOrder(); @@ -76,7 +79,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { multiSimPreference.setOrder(phonePreferenceOrder + simSlotNumber); multiSimPreference.setKey(KEY_PHONE_NUMBER + simSlotNumber); multiSimPreference.setSelectable(false); - screen.addPreference(multiSimPreference); + category.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); } } diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java index 967eea6155d..407e4e5c30e 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java @@ -27,6 +27,7 @@ import android.telephony.TelephonyManager; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; @@ -42,6 +43,8 @@ import java.util.List; */ public class ImeiInfoPreferenceController extends BasePreferenceController { + private static final String KEY_PREFERENCE_CATEGORY = "device_detail_category"; + private final boolean mIsMultiSim; private final TelephonyManager mTelephonyManager; private final List mPreferenceList = new ArrayList<>(); @@ -61,6 +64,7 @@ public class ImeiInfoPreferenceController extends BasePreferenceController { public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); final Preference preference = screen.findPreference(getPreferenceKey()); + final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY); mPreferenceList.add(preference); updatePreference(preference, 0 /* simSlot */); @@ -72,7 +76,7 @@ public class ImeiInfoPreferenceController extends BasePreferenceController { final Preference multiSimPreference = createNewPreference(screen.getContext()); multiSimPreference.setOrder(imeiPreferenceOrder + simSlotNumber); multiSimPreference.setKey(getPreferenceKey() + simSlotNumber); - screen.addPreference(multiSimPreference); + category.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); updatePreference(multiSimPreference, simSlotNumber); } diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java index 02c191679d1..4204ec14f9e 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java @@ -24,6 +24,7 @@ import android.telephony.TelephonyManager; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; @@ -37,6 +38,7 @@ public class SimStatusPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { private static final String KEY_SIM_STATUS = "sim_status"; + private static final String KEY_PREFERENCE_CATEGORY = "device_detail_category"; private final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; @@ -64,6 +66,7 @@ public class SimStatusPreferenceController extends if (!isAvailable() || preference == null || !preference.isVisible()) { return; } + final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY); mPreferenceList.add(preference); @@ -74,7 +77,7 @@ public class SimStatusPreferenceController extends final Preference multiSimPreference = createNewPreference(screen.getContext()); multiSimPreference.setOrder(simStatusOrder + simSlotNumber); multiSimPreference.setKey(KEY_SIM_STATUS + simSlotNumber); - screen.addPreference(multiSimPreference); + category.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java index 997c35e19e5..673f6c6463f 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java @@ -39,6 +39,7 @@ import android.telephony.TelephonyManager; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; @@ -68,6 +69,8 @@ public class ImeiInfoPreferenceControllerTest { private UserManager mUserManager; @Mock private Fragment mFragment; + @Mock + private PreferenceCategory mCategory; private Context mContext; private ImeiInfoPreferenceController mController; @@ -82,6 +85,8 @@ public class ImeiInfoPreferenceControllerTest { doReturn(AVAILABLE).when(mController).getAvailabilityStatus(); when(mScreen.getContext()).thenReturn(mContext); doReturn(mSecondSimPreference).when(mController).createNewPreference(mContext); + final String categoryKey = "device_detail_category"; + when(mScreen.findPreference(categoryKey)).thenReturn(mCategory); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); final String prefKey = mController.getPreferenceKey(); @@ -97,7 +102,7 @@ public class ImeiInfoPreferenceControllerTest { mController.displayPreference(mScreen); - verify(mScreen).addPreference(mSecondSimPreference); + verify(mCategory).addPreference(mSecondSimPreference); } @Test 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 059ad425ed2..85a6fac765a 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java @@ -30,6 +30,7 @@ import android.telephony.TelephonyManager; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; @@ -59,6 +60,8 @@ public class SimStatusPreferenceControllerTest { private UserManager mUserManager; @Mock private Fragment mFragment; + @Mock + private PreferenceCategory mCategory; private Context mContext; private SimStatusPreferenceController mController; @@ -71,6 +74,8 @@ public class SimStatusPreferenceControllerTest { mController = spy(new SimStatusPreferenceController(mContext, mFragment)); doReturn(true).when(mController).isAvailable(); when(mScreen.getContext()).thenReturn(mContext); + final String categoryKey = "device_detail_category"; + when(mScreen.findPreference(categoryKey)).thenReturn(mCategory); doReturn(mSecondSimPreference).when(mController).createNewPreference(mContext); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); @@ -85,7 +90,7 @@ public class SimStatusPreferenceControllerTest { mController.displayPreference(mScreen); - verify(mScreen).addPreference(mSecondSimPreference); + verify(mCategory).addPreference(mSecondSimPreference); } @Test diff --git a/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java index 2a06ce92c53..0f02df94b5f 100644 --- a/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java @@ -36,6 +36,7 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.annotation.UiThreadTest; @@ -67,6 +68,7 @@ public class PhoneNumberPreferenceControllerTest { private SubscriptionInfo mSubscriptionInfo; @Mock private SubscriptionManager mSubscriptionManager; + private PreferenceCategory mCategory; private PreferenceScreen mScreen; private Context mContext; @@ -92,6 +94,10 @@ public class PhoneNumberPreferenceControllerTest { mPreference.setKey(mController.getPreferenceKey()); mPreference.setVisible(true); mScreen.addPreference(mPreference); + final String categoryKey = "basic_info_category"; + mCategory = new PreferenceCategory(mContext); + mCategory.setKey(categoryKey); + mScreen.addPreference(mCategory); doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(anyInt()); doReturn(mSecondPreference).when(mController).createNewPreference(mContext); @@ -117,9 +123,11 @@ public class PhoneNumberPreferenceControllerTest { public void displayPreference_multiSim_shouldAddSecondPreference() { when(mTelephonyManager.getPhoneCount()).thenReturn(2); + final Preference sim1Preference = new Preference(mContext); + mCategory.addItemFromInflater(sim1Preference); mController.displayPreference(mScreen); - assertThat(mScreen.getPreferenceCount()).isEqualTo(2); + assertThat(mCategory.getPreferenceCount()).isEqualTo(2); } @Test