From 9c9b661253be41e0dd736c350aa3bb15c3606bed Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Sat, 8 May 2021 17:40:45 +0000 Subject: [PATCH] Revert "Revert "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. This reverts commit d30570e29aba21d223ae436f3e0720d91ba1920f. Reason for revert: Resubmission after fix Bug: 178191941 Test: presubmit Change-Id: Ib9777aba92462eec1d7c595833a86cfeddc02c1b --- .../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 219fa3ca52707..a68886842529c 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22005,7 +22005,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); } } @@ -22295,7 +22295,9 @@ public class PackageManagerService extends IPackageManager.Stub new PersistentPreferredActivity(filter, activity, true)); scheduleWritePackageRestrictionsLocked(userId); } - updateDefaultHomeNotLocked(userId); + if (isHomeFilter(filter)) { + updateDefaultHomeNotLocked(userId); + } postPreferredActivityChangedBroadcast(userId); } @@ -22664,6 +22666,11 @@ public class PackageManagerService extends IPackageManager.Stub return filter; } + private boolean isHomeFilter(@NonNull WatchedIntentFilter 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,