Merge "Revert "Use language tags to store Configuration's locale list."" into qt-dev

This commit is contained in:
Colin Cross
2019-09-10 19:18:48 +00:00
committed by Android (Google) Code Review
5 changed files with 24 additions and 92 deletions

View File

@@ -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 {

View File

@@ -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;
@@ -140,6 +142,26 @@ public final class LocaleList implements Parcelable {
dest.writeString(mStringRepresentation);
}
/**
* 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.
*/