Loading src/com/android/settings/applications/appinfo/AppLocaleDetails.java +12 −2 Original line number Diff line number Diff line Loading @@ -237,18 +237,28 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen mSuggestedLocales.add(appLocale); } // 2nd locale in suggested languages group. if (simLocale != null && !simLocale.equals(appLocale)) { if (simLocale != null && !compareLocale(simLocale, appLocale)) { mSuggestedLocales.add(simLocale); } // Other locales in suggested languages group. for (int i = 0; i < currentSystemLocales.size(); i++) { Locale locale = currentSystemLocales.get(i); if (!locale.equals(appLocale) && !locale.equals(simLocale)) { if (!compareLocale(locale, appLocale) && !compareLocale(locale, simLocale)) { mSuggestedLocales.add(locale); } } } static boolean compareLocale(Locale source, Locale target) { if (source == null && target == null) { return true; } else if (source != null && target != null) { return LocaleList.matchesLanguageAndScript(source, target); } else { return false; } } @VisibleForTesting void handleSupportedLocales() { //TODO Waiting for PackageManager api Loading tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,26 @@ public class AppLocaleDetailsTest { assertFalse(helper.getSupportedLocales().isEmpty()); } @Test @UiThreadTest public void handleAllLocalesData_compareLocale() { //Use LocaleList.matchScore() to compare two locales. assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("en-US"), Locale.forLanguageTag("en-CA"))); assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"), Locale.forLanguageTag("zh"))); assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"), Locale.forLanguageTag("zh-Hans"))); assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-TW"), Locale.forLanguageTag("zh-Hant"))); //Use Locale.equals() to compare two locales. assertFalse(Locale.forLanguageTag("en-US").equals(Locale.forLanguageTag("en-CA"))); assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh"))); assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh-Hans"))); assertFalse(Locale.forLanguageTag("zh-TW").equals(Locale.forLanguageTag("zh-Hant"))); } /** * Sets the initial Locale data * Loading Loading
src/com/android/settings/applications/appinfo/AppLocaleDetails.java +12 −2 Original line number Diff line number Diff line Loading @@ -237,18 +237,28 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen mSuggestedLocales.add(appLocale); } // 2nd locale in suggested languages group. if (simLocale != null && !simLocale.equals(appLocale)) { if (simLocale != null && !compareLocale(simLocale, appLocale)) { mSuggestedLocales.add(simLocale); } // Other locales in suggested languages group. for (int i = 0; i < currentSystemLocales.size(); i++) { Locale locale = currentSystemLocales.get(i); if (!locale.equals(appLocale) && !locale.equals(simLocale)) { if (!compareLocale(locale, appLocale) && !compareLocale(locale, simLocale)) { mSuggestedLocales.add(locale); } } } static boolean compareLocale(Locale source, Locale target) { if (source == null && target == null) { return true; } else if (source != null && target != null) { return LocaleList.matchesLanguageAndScript(source, target); } else { return false; } } @VisibleForTesting void handleSupportedLocales() { //TODO Waiting for PackageManager api Loading
tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,26 @@ public class AppLocaleDetailsTest { assertFalse(helper.getSupportedLocales().isEmpty()); } @Test @UiThreadTest public void handleAllLocalesData_compareLocale() { //Use LocaleList.matchScore() to compare two locales. assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("en-US"), Locale.forLanguageTag("en-CA"))); assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"), Locale.forLanguageTag("zh"))); assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"), Locale.forLanguageTag("zh-Hans"))); assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-TW"), Locale.forLanguageTag("zh-Hant"))); //Use Locale.equals() to compare two locales. assertFalse(Locale.forLanguageTag("en-US").equals(Locale.forLanguageTag("en-CA"))); assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh"))); assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh-Hans"))); assertFalse(Locale.forLanguageTag("zh-TW").equals(Locale.forLanguageTag("zh-Hant"))); } /** * Sets the initial Locale data * Loading