Fix bootloop issue with UsageStatsService.

When the configurations are being read from the proto file, if a
duplicate locale is found in the list, an exception is thrown from
LocaleList which causes the UsageStatsService to crash. Instead, we'll
now log a WTF if duplicate locales are found when parsing the
configuration proto and not add the duplicate locale to the list.

Bug: 140197723
Test: atest UsageStatsDatabaseTest
Change-Id: Ie178b3cfdd45e6771a7c0e4bb42e47f79b5c30cc
(cherry picked from commit 5d9031dbee)
This commit is contained in:
Varun Shah
2019-09-04 12:04:02 -07:00
parent 81e2e1f105
commit 669d886cdc

View File

@@ -1222,7 +1222,15 @@ public final class Configuration implements Parcelable, Comparable<Configuration
.setVariant(variant)
.setScript(script)
.build();
list.add(locale);
// Log a WTF here if a repeated locale is found to avoid throwing an
// exception in system server when LocaleList is created below
final int inListIndex = list.indexOf(locale);
if (inListIndex != -1) {
Slog.wtf(TAG, "Repeated locale (" + list.get(inListIndex) + ")"
+ " found when trying to add: " + locale.toString());
} else {
list.add(locale);
}
} catch (IllformedLocaleException e) {
Slog.e(TAG, "readFromProto error building locale with: "
+ "language-" + language + ";country-" + country