summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2019-09-10 19:18:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-09-10 19:18:48 +0000
commitdd67a548b27f171ccabbf47af76075d252cb883e (patch)
treef0321c0b9ab43cd0a5634eab5fb808eb4edf6601 /core/java/android
parentbdfd7d6adbc4fe02adcb1da0fca99f01acb87606 (diff)
parent68cdb74d9198dac04c9a5f65f77d685b69673f79 (diff)
Merge "Revert "Use language tags to store Configuration's locale list."" into qt-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/content/res/Configuration.java11
-rw-r--r--core/java/android/os/LocaleList.java22
2 files changed, 23 insertions, 10 deletions
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index ac1cbd4619df..9cf54f41a64b 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -23,7 +23,6 @@ import static android.content.ConfigurationProto.HARD_KEYBOARD_HIDDEN;
import static android.content.ConfigurationProto.KEYBOARD;
import static android.content.ConfigurationProto.KEYBOARD_HIDDEN;
import static android.content.ConfigurationProto.LOCALES;
-import static android.content.ConfigurationProto.LOCALE_LIST;
import static android.content.ConfigurationProto.MCC;
import static android.content.ConfigurationProto.MNC;
import static android.content.ConfigurationProto.NAVIGATION;
@@ -1112,7 +1111,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
protoOutputStream.write(MCC, mcc);
protoOutputStream.write(MNC, mnc);
if (mLocaleList != null) {
- protoOutputStream.write(LOCALE_LIST, mLocaleList.toLanguageTags());
+ mLocaleList.writeToProto(protoOutputStream, LOCALES);
}
protoOutputStream.write(SCREEN_LAYOUT, screenLayout);
protoOutputStream.write(COLOR_MODE, colorMode);
@@ -1284,14 +1283,6 @@ public final class Configuration implements Parcelable, Comparable<Configuration
case (int) WINDOW_CONFIGURATION:
windowConfiguration.readFromProto(protoInputStream, WINDOW_CONFIGURATION);
break;
- case (int) LOCALE_LIST:
- try {
- setLocales(LocaleList.forLanguageTags(protoInputStream.readString(
- LOCALE_LIST)));
- } catch (Exception e) {
- Slog.e(TAG, "error parsing locale list in configuration.", e);
- }
- break;
}
}
} finally {
diff --git a/core/java/android/os/LocaleList.java b/core/java/android/os/LocaleList.java
index 0de09efad8ea..7782753e4abc 100644
--- a/core/java/android/os/LocaleList.java
+++ b/core/java/android/os/LocaleList.java
@@ -21,7 +21,9 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Size;
import android.annotation.UnsupportedAppUsage;
+import android.content.LocaleProto;
import android.icu.util.ULocale;
+import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.GuardedBy;
@@ -141,6 +143,26 @@ public final class LocaleList implements Parcelable {
}
/**
+ * Helper to write LocaleList to a protocol buffer output stream. Assumes the parent
+ * protobuf has declared the locale as repeated.
+ *
+ * @param protoOutputStream Stream to write the locale to.
+ * @param fieldId Field Id of the Locale as defined in the parent message.
+ * @hide
+ */
+ public void writeToProto(ProtoOutputStream protoOutputStream, long fieldId) {
+ for (int i = 0; i < mList.length; i++) {
+ final Locale locale = mList[i];
+ final long token = protoOutputStream.start(fieldId);
+ protoOutputStream.write(LocaleProto.LANGUAGE, locale.getLanguage());
+ protoOutputStream.write(LocaleProto.COUNTRY, locale.getCountry());
+ protoOutputStream.write(LocaleProto.VARIANT, locale.getVariant());
+ protoOutputStream.write(LocaleProto.SCRIPT, locale.getScript());
+ protoOutputStream.end(token);
+ }
+ }
+
+ /**
* Retrieves a String representation of the language tags in this list.
*/
@NonNull