From cac5c6812a7598caad0535172a0bbc2b676e0339 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 26 Apr 2021 14:07:05 -0700 Subject: [PATCH] Only update default home when the preferred home activity is modified. To avoid the race condition when other preferred activities are being configured while home role is being set. Fixes: 178191941 Test: presubmit Change-Id: Ie9b4c46b6d75078dd29fffe436306b10034005d2 --- .../com/android/server/pm/PackageManagerService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index d2cbcf0598fcb..0ec7c370ce289 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22015,7 +22015,7 @@ public class PackageManagerService extends IPackageManager.Stub pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); } - if (!updateDefaultHomeNotLocked(userId)) { + if (!(isHomeFilter(filter) && updateDefaultHomeNotLocked(userId))) { postPreferredActivityChangedBroadcast(userId); } } @@ -22272,7 +22272,9 @@ public class PackageManagerService extends IPackageManager.Stub new PersistentPreferredActivity(filter, activity, true)); scheduleWritePackageRestrictionsLocked(userId); } - updateDefaultHomeNotLocked(userId); + if (isHomeFilter(filter)) { + updateDefaultHomeNotLocked(userId); + } postPreferredActivityChangedBroadcast(userId); } @@ -22609,6 +22611,11 @@ public class PackageManagerService extends IPackageManager.Stub return filter; } + private boolean isHomeFilter(@NonNull IntentFilter filter) { + return filter.hasAction(Intent.ACTION_MAIN) && filter.hasCategory(Intent.CATEGORY_HOME) + && filter.hasCategory(CATEGORY_DEFAULT); + } + ComponentName getHomeActivitiesAsUser(List allHomeCandidates, int userId) { return liveComputer().getHomeActivitiesAsUser(allHomeCandidates,