From 997cd29458e229b703d4e68113968396aa5384ff Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Wed, 22 Jan 2025 08:39:00 +0000 Subject: [PATCH] [Settings] Add a flag to control show new System language picker UI or not Bug: 394542699 Test: manual Test: atest SettingsRoboTests:com.android.settings.localepicker.LocaleListEditorTest Flag: EXEMPT refactor Change-Id: I694e92cb7f61d208c36cb4b40aa3182cd838d5bb --- res/layout/locale_order_list.xml | 3 +- res/xml/languages.xml | 7 ++++ .../localepicker/LocaleListEditor.java | 38 ++++++++++++------- ...alePickerBaseListPreferenceController.java | 9 ++--- .../localepicker/LocaleListEditorTest.java | 5 +++ 5 files changed, 43 insertions(+), 19 deletions(-) diff --git a/res/layout/locale_order_list.xml b/res/layout/locale_order_list.xml index da1eb62d996..36bb06d060b 100644 --- a/res/layout/locale_order_list.xml +++ b/res/layout/locale_order_list.xml @@ -44,7 +44,8 @@ android:textAlignment="textStart" android:text="@string/add_a_language" style="@style/Base.Widget.AppCompat.Button.Borderless" - android:textAppearance="?android:attr/textAppearanceListItem"/> + android:textAppearance="?android:attr/textAppearanceListItem" + android:visibility="gone"/> diff --git a/res/xml/languages.xml b/res/xml/languages.xml index d478aa18ded..1fb6368efba 100644 --- a/res/xml/languages.xml +++ b/res/xml/languages.xml @@ -31,6 +31,13 @@ + + (mLocaleList.size()); mPreferences = new ArrayMap<>(); mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @@ -246,7 +243,7 @@ public abstract class LocalePickerBaseListPreferenceController extends private void setupLocaleList() { mLocaleList = getLocaleCollectorController(mContext).getSupportedLocaleList( mParentLocale, false, mIsCountryMode); - mLocaleOptions.clear(); + mLocaleOptions = new ArrayList<>(mLocaleList.size()); } private List getSortedLocaleList( @@ -262,7 +259,9 @@ public abstract class LocalePickerBaseListPreferenceController extends boolean shouldShowLocaleEditor = shouldShowLocaleEditor(localeInfo); if (shouldShowLocaleEditor) { List feedItemList = getUserLocaleList(); - feedItemList.add(localeInfo); + for (LocaleStore.LocaleInfo locale : mLocaleList) { + feedItemList.add(locale); + } LocaleList localeList = new LocaleList(feedItemList.stream() .map(LocaleStore.LocaleInfo::getLocale) .toArray(Locale[]::new)); diff --git a/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java b/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java index 0d5a952f686..4272afe8eba 100644 --- a/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java +++ b/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java @@ -57,6 +57,7 @@ import android.widget.TextView; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.preference.Preference; import androidx.test.core.app.ApplicationProvider; import com.android.internal.app.LocaleStore; @@ -145,6 +146,8 @@ public class LocaleListEditorTest { private ImageView mDragHandle; @Mock private NotificationController mNotificationController; + @Mock + private Preference mAddLanguagePreference; @Rule public final CheckFlagsRule mCheckFlagsRule = @@ -168,6 +171,8 @@ public class LocaleListEditorTest { context.getSystemService(Context.USER_SERVICE)); ReflectionHelpers.setField(mLocaleListEditor, "mAdapter", mAdapter); ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguage", mAddLanguage); + ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguagePreference", + mAddLanguagePreference); ReflectionHelpers.setField(mLocaleListEditor, "mFragmentManager", mFragmentManager); ReflectionHelpers.setField(mLocaleListEditor, "mMetricsFeatureProvider", mMetricsFeatureProvider);