Merge "Merge "Defer broadcasting ACTION_DEFERRED_ACTIVITY_CHANGED until actual change" into qt-dev am: f883ea697e" into qt-dev-plus-aosp

This commit is contained in:
Android Build Merger (Role)
2019-04-08 19:23:56 +00:00
committed by Android (Google) Code Review
3 changed files with 25 additions and 11 deletions

View File

@@ -193,8 +193,10 @@ public abstract class PackageManagerInternal {
* *
* @param packageName package name of the default home, or {@code null} to remove * @param packageName package name of the default home, or {@code null} to remove
* @param userId the user id * @param userId the user id
* @param callback the callback made after the default home as been updated
*/ */
void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId); void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
@NonNull Consumer<Boolean> callback);
} }
/** /**

View File

@@ -19710,8 +19710,9 @@ public class PackageManagerService extends IPackageManager.Stub
filter.dump(new LogPrinter(Log.INFO, TAG), " "); filter.dump(new LogPrinter(Log.INFO, TAG), " ");
pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
scheduleWritePackageRestrictionsLocked(userId); scheduleWritePackageRestrictionsLocked(userId);
postPreferredActivityChangedBroadcast(userId); if (!updateDefaultHomeLPw(userId)) {
updateDefaultHomeLPw(userId); postPreferredActivityChangedBroadcast(userId);
}
} }
} }
@@ -20490,7 +20491,10 @@ public class PackageManagerService extends IPackageManager.Stub
return null; return null;
} }
private void updateDefaultHomeLPw(int userId) { /**
* @return Whether the ACTION_PREFERRED_ACTIVITY_CHANGED broadcast has been scheduled.
*/
private boolean updateDefaultHomeLPw(int userId) {
Intent intent = getHomeIntent(); Intent intent = getHomeIntent();
List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null, List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null,
PackageManager.GET_META_DATA, userId); PackageManager.GET_META_DATA, userId);
@@ -20501,15 +20505,20 @@ public class PackageManagerService extends IPackageManager.Stub
? preferredResolveInfo.activityInfo.packageName : null; ? preferredResolveInfo.activityInfo.packageName : null;
String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId); String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId);
if (TextUtils.equals(currentPackageName, packageName)) { if (TextUtils.equals(currentPackageName, packageName)) {
return; return false;
} }
String[] callingPackages = getPackagesForUid(Binder.getCallingUid()); String[] callingPackages = getPackagesForUid(Binder.getCallingUid());
if (callingPackages != null && ArrayUtils.contains(callingPackages, if (callingPackages != null && ArrayUtils.contains(callingPackages,
mRequiredPermissionControllerPackage)) { mRequiredPermissionControllerPackage)) {
// PermissionController manages default home directly. // PermissionController manages default home directly.
return; return false;
} }
mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId); mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId, (successful) -> {
if (successful) {
postPreferredActivityChangedBroadcast(userId);
}
});
return true;
} }
@Override @Override

View File

@@ -85,6 +85,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
/** /**
* Service for role management. * Service for role management.
@@ -780,19 +781,21 @@ public class RoleManagerService extends SystemService implements RoleUserState.C
} }
@Override @Override
public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId) { public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
RemoteCallback callback = new RemoteCallback(result -> { @NonNull Consumer<Boolean> callback) {
RemoteCallback remoteCallback = new RemoteCallback(result -> {
boolean successful = result != null; boolean successful = result != null;
if (!successful) { if (!successful) {
Slog.e(LOG_TAG, "Failed to set default home: " + packageName); Slog.e(LOG_TAG, "Failed to set default home: " + packageName);
} }
callback.accept(successful);
}); });
if (packageName != null) { if (packageName != null) {
getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME, getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME,
packageName, 0, callback); packageName, 0, remoteCallback);
} else { } else {
getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0, getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0,
callback); remoteCallback);
} }
} }
} }