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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user