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 d30570e29a.

Reason for revert: Resubmission after fix
Bug: 178191941
Test: presubmit
Change-Id: Ib9777aba92462eec1d7c595833a86cfeddc02c1b
This commit is contained in:
Hai Zhang
2021-05-08 17:40:45 +00:00
parent 7e7c76c8a8
commit 9c9b661253

View File

@@ -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<ResolveInfo> allHomeCandidates,
int userId) {
return liveComputer().getHomeActivitiesAsUser(allHomeCandidates,