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
This commit is contained in:
@@ -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<ResolveInfo> allHomeCandidates,
|
||||
int userId) {
|
||||
return liveComputer().getHomeActivitiesAsUser(allHomeCandidates,
|
||||
|
||||
Reference in New Issue
Block a user