Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e9760ef authored by Allen Su's avatar Allen Su Committed by Android (Google) Code Review
Browse files

Merge "Change locale comparison API"

parents e0f8b565 03711a8e
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -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
+20 −0
Original line number Diff line number Diff line
@@ -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
     *