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)
|
.setVariant(variant)
|
||||||
.setScript(script)
|
.setScript(script)
|
||||||
.build();
|
.build();
|
||||||
|
// 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);
|
list.add(locale);
|
||||||
|
}
|
||||||
} catch (IllformedLocaleException e) {
|
} catch (IllformedLocaleException e) {
|
||||||
Slog.e(TAG, "readFromProto error building locale with: "
|
Slog.e(TAG, "readFromProto error building locale with: "
|
||||||
+ "language-" + language + ";country-" + country
|
+ "language-" + language + ";country-" + country
|
||||||
|
|||||||
Reference in New Issue
Block a user