Change locale comparison API
Bug: 209729853 Test: atest AppLocaleDetailsTest Change-Id: I1568fe9474e473ac6d3fb81dcf9edf9ba7434e85
This commit is contained in:
@@ -237,18 +237,28 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen
|
|||||||
mSuggestedLocales.add(appLocale);
|
mSuggestedLocales.add(appLocale);
|
||||||
}
|
}
|
||||||
// 2nd locale in suggested languages group.
|
// 2nd locale in suggested languages group.
|
||||||
if (simLocale != null && !simLocale.equals(appLocale)) {
|
if (simLocale != null && !compareLocale(simLocale, appLocale)) {
|
||||||
mSuggestedLocales.add(simLocale);
|
mSuggestedLocales.add(simLocale);
|
||||||
}
|
}
|
||||||
// Other locales in suggested languages group.
|
// Other locales in suggested languages group.
|
||||||
for (int i = 0; i < currentSystemLocales.size(); i++) {
|
for (int i = 0; i < currentSystemLocales.size(); i++) {
|
||||||
Locale locale = currentSystemLocales.get(i);
|
Locale locale = currentSystemLocales.get(i);
|
||||||
if (!locale.equals(appLocale) && !locale.equals(simLocale)) {
|
if (!compareLocale(locale, appLocale) && !compareLocale(locale, simLocale)) {
|
||||||
mSuggestedLocales.add(locale);
|
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
|
@VisibleForTesting
|
||||||
void handleSupportedLocales() {
|
void handleSupportedLocales() {
|
||||||
//TODO Waiting for PackageManager api
|
//TODO Waiting for PackageManager api
|
||||||
|
@@ -152,6 +152,26 @@ public class AppLocaleDetailsTest {
|
|||||||
assertFalse(helper.getSupportedLocales().isEmpty());
|
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
|
* Sets the initial Locale data
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user