Loading src/com/android/settings/regionalpreferences/NumberingSystemItemController.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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(); Loading @@ -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) { Loading tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -68,6 +71,7 @@ public class NumberingSystemItemControllerTest { @After public void tearDown() { LocaleList.setDefault(mCacheLocale); LocalePicker.updateLocales(mCacheLocale); } @Test Loading Loading @@ -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() { Loading Loading
src/com/android/settings/regionalpreferences/NumberingSystemItemController.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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(); Loading @@ -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) { Loading
tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -68,6 +71,7 @@ public class NumberingSystemItemControllerTest { @After public void tearDown() { LocaleList.setDefault(mCacheLocale); LocalePicker.updateLocales(mCacheLocale); } @Test Loading Loading @@ -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() { Loading