Merge "[Regional Preference] Set numbering system when select it" into udc-dev am: 74ab90bb53
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23258700
Change-Id: I093642000e42c8337b3f5cc6da6097d69da46eed
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java b/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java
index a9689fc..e3a8d23 100644
--- a/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java
+++ b/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java
@@ -183,7 +183,8 @@
Bundle bundle = new Bundle();
bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
ARG_VALUE_NUMBERING_SYSTEM_SELECT);
- bundle.putString(KEY_SELECTED_LANGUAGE, updatedLocale.toLanguageTag());
+ bundle.putString(KEY_SELECTED_LANGUAGE,
+ updatedLocale != null ? updatedLocale.toLanguageTag() : "");
mParentFragment.setArguments(bundle);
continue;
}
@@ -194,13 +195,14 @@
private Locale saveNumberingSystemToLocale(Locale targetLocale, String value) {
LocaleList localeList = LocalePicker.getLocales();
Locale[] locales = new Locale[localeList.size()];
+ Locale updatedLocale = null;
for (int i = 0; i < localeList.size(); i++) {
Locale locale = localeList.get(i);
if (targetLocale.equals(locale)) {
- if (value.equals(RegionalPreferencesDataUtils.DEFAULT_VALUE)) {
+ if (RegionalPreferencesDataUtils.DEFAULT_VALUE.equals(value)) {
value = null;
}
- Locale updatedLocale = new Locale.Builder()
+ updatedLocale = new Locale.Builder()
.setLocale(locale)
.setUnicodeLocaleKeyword(ExtensionTypes.NUMBERING_SYSTEM, value)
.build();
@@ -210,7 +212,7 @@
locales[i] = localeList.get(i);
}
LocalePicker.updateLocales(new LocaleList(locales));
- return targetLocale;
+ return updatedLocale;
}
private static String getNumberingSystem(Locale locale) {
diff --git a/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java
index 6a91295..5c42ad9 100644
--- a/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java
+++ b/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java
@@ -16,6 +16,8 @@
package com.android.settings.regionalpreferences;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
@@ -34,6 +36,7 @@
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
+import com.android.internal.app.LocalePicker;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.TickButtonPreference;
@@ -68,6 +71,7 @@
@After
public void tearDown() {
LocaleList.setDefault(mCacheLocale);
+ LocalePicker.updateLocales(mCacheLocale);
}
@Test
@@ -124,6 +128,31 @@
@Test
@UiThreadTest
+ public void handlePreferenceTreeClick_numbersSelect_numberingSystemIsUpdated() {
+ LocalePicker.updateLocales(LocaleList.forLanguageTags("en-US,zh-TW,ar-BH"));
+ Bundle bundle = new Bundle();
+ bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
+ NumberingSystemItemController.ARG_VALUE_NUMBERING_SYSTEM_SELECT);
+ bundle.putString(
+ NumberingSystemItemController.KEY_SELECTED_LANGUAGE, "ar-BH");
+ TickButtonPreference defaultPreference = new TickButtonPreference(mApplicationContext);
+ TickButtonPreference numberPreference = new TickButtonPreference(mApplicationContext);
+ defaultPreference.setKey("default");
+ numberPreference.setKey("latn");
+ mPreferenceScreen.addPreference(defaultPreference);
+ mPreferenceScreen.addPreference(numberPreference);
+ mController = new NumberingSystemItemController(mApplicationContext, bundle);
+ mController.setParentFragment(mFragment);
+ mController.displayPreference(mPreferenceScreen);
+
+ mController.handlePreferenceTreeClick(numberPreference);
+
+ assertThat(LocalePicker.getLocales().toLanguageTags()).contains(
+ "en-US,zh-TW,ar-BH-u-nu-latn");
+ }
+
+ @Test
+ @UiThreadTest
public void displayPreference_languageOptAndHas2LocaleWithSingleNu_showNothing() {
LocaleList.setDefault(LocaleList.forLanguageTags("en-US,zh-TW"));
Bundle bundle = new Bundle();