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

Commit a722139f authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Decouple Content Name Locale from Content Language Locale

There was an assumption that content language Locale was
a 1:1 mapping with content locale name, which is not the
case. This change separates the two and provides a new
API for retreiving the set of Locales for content name.

Test: Manual
Bug: 67112896
Merged-In: If87094f15e3a1dfe36d37745ed3d2cf79cc441f1
Change-Id: I44cb527ceb77fe321500f9d5fc00f6880ee52cb7
parent d81e99a9
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.os.Parcelable;
import android.text.TextUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -63,12 +64,6 @@ public class ServiceInfo {
            throw new RuntimeException("bad locales length " + newLocales.size());
        }

        for (Locale l : newLocales) {
            if (!newNames.containsKey(l)) {
                throw new IllegalArgumentException("A name must be provided for each locale");
            }
        }

        names = new HashMap(newNames.size());
        names.putAll(newNames);
        className = newClassName;
@@ -128,7 +123,7 @@ public class ServiceInfo {
     * Get the user-displayable name for this cell-broadcast service corresponding to the
     * provided {@link Locale}.
     * @param locale The {@link Locale} in which you want the name of the service. This must be a
     *               value from the list returned by {@link #getLocales()} -- an
     *               value from the set returned by {@link #getNamedContentLocales()} -- an
     *               {@link java.util.NoSuchElementException} may be thrown otherwise.
     * @return The {@link CharSequence} providing the name of the service in the given
     *         {@link Locale}
@@ -140,6 +135,17 @@ public class ServiceInfo {
        return names.get(locale);
    }

    /**
     * Return an unmodifiable set of the current {@link Locale}s that have a user-displayable name
     * associated with them. The user-displayable name associated with any {@link Locale} in this
     * set can be retrieved with {@link #getNameForLocale(Locale)}.
     * @return An unmodifiable set of {@link Locale} objects corresponding to a user-displayable
     * content name in that locale.
     */
    public @NonNull Set<Locale> getNamedContentLocales() {
        return Collections.unmodifiableSet(names.keySet());
    }

    /**
     * The class name for this service - used to categorize and filter
     */