Merge "[Regional Preference] Set numbering system when select it" into udc-dev

This commit is contained in:
Zoey Chen
2023-05-17 09:44:45 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 4 deletions

View File

@@ -183,7 +183,8 @@ public class NumberingSystemItemController extends BasePreferenceController {
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 @@ public class NumberingSystemItemController extends BasePreferenceController {
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 @@ public class NumberingSystemItemController extends BasePreferenceController {
locales[i] = localeList.get(i);
}
LocalePicker.updateLocales(new LocaleList(locales));
return targetLocale;
return updatedLocale;
}
private static String getNumberingSystem(Locale locale) {

View File

@@ -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.preference.PreferenceScreen;
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 @@ public class NumberingSystemItemControllerTest {
@After
public void tearDown() {
LocaleList.setDefault(mCacheLocale);
LocalePicker.updateLocales(mCacheLocale);
}
@Test
@@ -122,6 +126,31 @@ public class NumberingSystemItemControllerTest {
"test_key");
}
@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() {