Merge "[Settings] Add test cases for App LocalePicker page" into main

This commit is contained in:
Zoey Chen
2025-03-06 18:56:36 -08:00
committed by Android (Google) Code Review
6 changed files with 401 additions and 14 deletions

View File

@@ -31,6 +31,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.core.app.NotificationCompat;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
@@ -62,6 +63,7 @@ public class AppLocaleAllListPreferenceController extends
private static final String KEY_PREFERENCE_CATEGORY_ADD_LANGUAGE_ALL_SUPPORTED =
"system_language_all_supported_category";
private Activity mActivity;
@SuppressWarnings("NullAway")
private PreferenceCategory mPreferenceCategory;
private Set<LocaleStore.LocaleInfo> mLocaleList;
@@ -84,12 +86,15 @@ public class AppLocaleAllListPreferenceController extends
@SuppressWarnings("NullAway")
public AppLocaleAllListPreferenceController(@NonNull Context context,
@NonNull String preferenceKey, @Nullable String packageName,
boolean isNumberingSystemMode, @NonNull LocaleStore.LocaleInfo parentLocale) {
boolean isNumberingSystemMode, @NonNull LocaleStore.LocaleInfo parentLocale,
@NonNull Activity activity, @NonNull AppLocaleCollector appLocaleCollector) {
super(context, preferenceKey);
mPackageName = packageName;
mIsNumberingSystemMode = isNumberingSystemMode;
mParentLocale = parentLocale;
mIsCountryMode = mParentLocale != null;
mActivity = activity;
mAppLocaleCollector = appLocaleCollector;
}
@Override
@@ -137,7 +142,8 @@ public class AppLocaleAllListPreferenceController extends
setupSupportedPreference(newList, existingSupportedPreferences);
}
private void setupSupportedPreference(List<LocaleStore.LocaleInfo> localeInfoList,
@VisibleForTesting
void setupSupportedPreference(List<LocaleStore.LocaleInfo> localeInfoList,
Map<String, Preference> existingSupportedPreferences) {
if (mIsNumberingSystemMode) {
mPreferenceCategory.setTitle("");
@@ -163,6 +169,7 @@ public class AppLocaleAllListPreferenceController extends
// TODO: b/388199937 - Switch to correct fragment.
Log.d(TAG, "setupPreference: mIsCountryMode = " + mIsCountryMode);
switchFragment(mContext, locale, shouldShowAppLanguage(locale));
mActivity.finish();
return true;
});
mSupportedPreferences.put(locale.getId(), pref);
@@ -173,7 +180,8 @@ public class AppLocaleAllListPreferenceController extends
return AVAILABLE;
}
private void switchFragment(Context context, LocaleStore.LocaleInfo localeInfo,
@VisibleForTesting
void switchFragment(Context context, LocaleStore.LocaleInfo localeInfo,
boolean shouldShowAppLanguage) {
if (shouldShowAppLanguage) {
LocaleUtils.onLocaleSelected(mContext, localeInfo, mPackageName);
@@ -190,10 +198,10 @@ public class AppLocaleAllListPreferenceController extends
.setArguments(extra)
.launch();
}
((Activity) mContext).finish();
}
private boolean shouldShowAppLanguage(LocaleStore.LocaleInfo localeInfo) {
@VisibleForTesting
boolean shouldShowAppLanguage(LocaleStore.LocaleInfo localeInfo) {
boolean isSystemLocale = localeInfo.isSystemLocale();
boolean isRegionLocale = localeInfo.getParent() != null;
boolean mayHaveDifferentNumberingSystem = localeInfo.hasNumberingSystems();

View File

@@ -400,13 +400,14 @@ public class AppLocalePickerFragment extends DashboardFragment implements
mIsNumberingMode = args.getBoolean(
RegionAndNumberingSystemPickerFragment.EXTRA_IS_NUMBERING_SYSTEM);
AppLocaleCollector appLocaleCollector = new AppLocaleCollector(context, mPackageName);
mSuggestedListPreferenceController =
new AppLocaleSuggestedListPreferenceController(context,
KEY_PREFERENCE_APP_LOCALE_SUGGESTED_LIST, mPackageName, mIsNumberingMode,
mLocaleInfo);
mLocaleInfo, getActivity(), appLocaleCollector);
mAppLocaleAllListPreferenceController = new AppLocaleAllListPreferenceController(
context, KEY_PREFERENCE_APP_LOCALE_LIST, mPackageName, mIsNumberingMode,
mLocaleInfo);
mLocaleInfo, getActivity(), appLocaleCollector);
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(mSuggestedListPreferenceController);
controllers.add(mAppLocaleAllListPreferenceController);

View File

@@ -26,6 +26,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.core.app.NotificationCompat;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
@@ -55,6 +56,7 @@ public class AppLocaleSuggestedListPreferenceController extends
private static final String KEY_PREFERENCE_CATEGORY_ADD_A_LANGUAGE_SUGGESTED =
"system_language_suggested_category";
private Activity mActivity;
@SuppressWarnings("NullAway")
private PreferenceCategory mPreferenceCategory;
private Set<LocaleStore.LocaleInfo> mLocaleList;
@@ -76,12 +78,15 @@ public class AppLocaleSuggestedListPreferenceController extends
@SuppressWarnings("NullAway")
public AppLocaleSuggestedListPreferenceController(@NonNull Context context,
@NonNull String preferenceKey, @Nullable String packageName,
boolean isNumberingSystemMode, @NonNull LocaleStore.LocaleInfo parentLocale) {
boolean isNumberingSystemMode, @NonNull LocaleStore.LocaleInfo parentLocale,
@NonNull Activity activity, @NonNull AppLocaleCollector appLocaleCollector) {
super(context, preferenceKey);
mPackageName = packageName;
mIsNumberingSystemMode = isNumberingSystemMode;
mParentLocale = parentLocale;
mIsCountryMode = mParentLocale != null;
mActivity = activity;
mAppLocaleCollector = appLocaleCollector;
}
@Override
@@ -92,7 +97,6 @@ public class AppLocaleSuggestedListPreferenceController extends
? KEY_PREFERENCE_CATEGORY_ADD_A_LANGUAGE_SUGGESTED
: KEY_PREFERENCE_CATEGORY_APP_LANGUAGE_SUGGESTED);
mAppLocaleCollector = new AppLocaleCollector(mContext, mPackageName);
mSuggestedPreferences = new ArrayMap<>();
mLocaleOptions = new ArrayList<>();
updatePreferences();
@@ -129,7 +133,8 @@ public class AppLocaleSuggestedListPreferenceController extends
setupSuggestedPreference(newList, existingSuggestedPreferences);
}
private void setupSuggestedPreference(List<LocaleStore.LocaleInfo> localeInfoList,
@VisibleForTesting
void setupSuggestedPreference(List<LocaleStore.LocaleInfo> localeInfoList,
Map<String, Preference> existingSuggestedPreferences) {
for (LocaleStore.LocaleInfo locale : localeInfoList) {
if (mIsNumberingSystemMode || mIsCountryMode) {
@@ -150,7 +155,7 @@ public class AppLocaleSuggestedListPreferenceController extends
}
}
}
Log.d(TAG, "setupSuggestedPreference, mPreferenceCategory setVisible"
Log.d(TAG, "setupSuggestedPreference, mPreferenceCategory setVisible = "
+ (mPreferenceCategory.getPreferenceCount() > 0));
mPreferenceCategory.setVisible(mPreferenceCategory.getPreferenceCount() > 0);
}
@@ -167,7 +172,7 @@ public class AppLocaleSuggestedListPreferenceController extends
pref.setKey(locale.toString());
pref.setOnPreferenceClickListener(clickedPref -> {
LocaleUtils.onLocaleSelected(mContext, locale, mPackageName);
((Activity) mContext).finish();
mActivity.finish();
return true;
});
mSuggestedPreferences.put(locale.getId(), pref);

View File

@@ -37,6 +37,7 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.app.AppLocaleCollector;
import com.android.internal.app.LocaleHelper;
import com.android.internal.app.LocaleStore;
import com.android.settings.R;
@@ -329,13 +330,14 @@ public class RegionAndNumberingSystemPickerFragment extends DashboardFragment im
controllers.add(mSuggestedListPreferenceController);
controllers.add(mSystemLocaleAllListPreferenceController);
} else {
AppLocaleCollector appLocaleCollector = new AppLocaleCollector(context, mPackageName);
mAppLocaleSuggestedListPreferenceController =
new AppLocaleSuggestedListPreferenceController(context,
KEY_PREFERENCE_APP_LOCALE_SUGGESTED_LIST, mPackageName,
mIsNumberingMode, mLocaleInfo);
mIsNumberingMode, mLocaleInfo, getActivity(), appLocaleCollector);
mAppLocaleAllListPreferenceController = new AppLocaleAllListPreferenceController(
context, KEY_PREFERENCE_APP_LOCALE_LIST, mPackageName, mIsNumberingMode,
mLocaleInfo);
mLocaleInfo, getActivity(), appLocaleCollector);
controllers.add(mAppLocaleSuggestedListPreferenceController);
controllers.add(mAppLocaleAllListPreferenceController);
}