Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 310c1971 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Defer broadcasting ACTION_DEFERRED_ACTIVITY_CHANGED until actual...

Merge "Merge "Defer broadcasting ACTION_DEFERRED_ACTIVITY_CHANGED until actual change" into qt-dev am: f883ea69" into qt-dev-plus-aosp
parents eb553b0d 45fd1f4e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -193,8 +193,10 @@ public abstract class PackageManagerInternal {
         *
         * @param packageName package name of the default home, or {@code null} to remove
         * @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);
    }

    /**
+15 −6
Original line number Diff line number Diff line
@@ -19710,8 +19710,9 @@ public class PackageManagerService extends IPackageManager.Stub
            filter.dump(new LogPrinter(Log.INFO, TAG), "  ");
            pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
            scheduleWritePackageRestrictionsLocked(userId);
            if (!updateDefaultHomeLPw(userId)) {
                postPreferredActivityChangedBroadcast(userId);
            updateDefaultHomeLPw(userId);
            }
        }
    }
@@ -20490,7 +20491,10 @@ public class PackageManagerService extends IPackageManager.Stub
        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();
        List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null,
                PackageManager.GET_META_DATA, userId);
@@ -20501,15 +20505,20 @@ public class PackageManagerService extends IPackageManager.Stub
                ? preferredResolveInfo.activityInfo.packageName : null;
        String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId);
        if (TextUtils.equals(currentPackageName, packageName)) {
            return;
            return false;
        }
        String[] callingPackages = getPackagesForUid(Binder.getCallingUid());
        if (callingPackages != null && ArrayUtils.contains(callingPackages,
                mRequiredPermissionControllerPackage)) {
            // PermissionController manages default home directly.
            return;
            return false;
        }
        mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId, (successful) -> {
            if (successful) {
                postPreferredActivityChangedBroadcast(userId);
            }
        mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId);
        });
        return true;
    }
    @Override
+7 −4
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;

/**
 * Service for role management.
@@ -780,19 +781,21 @@ public class RoleManagerService extends SystemService implements RoleUserState.C
        }

        @Override
        public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId) {
            RemoteCallback callback = new RemoteCallback(result -> {
        public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
                @NonNull Consumer<Boolean> callback) {
            RemoteCallback remoteCallback = new RemoteCallback(result -> {
                boolean successful = result != null;
                if (!successful) {
                    Slog.e(LOG_TAG, "Failed to set default home: " + packageName);
                }
                callback.accept(successful);
            });
            if (packageName != null) {
                getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME,
                        packageName, 0, callback);
                        packageName, 0, remoteCallback);
            } else {
                getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0,
                        callback);
                        remoteCallback);
            }
        }
    }