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

Commit 32e4cadb authored by Winson Chung's avatar Winson Chung Committed by android-build-merger
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
am: 310c1971

Change-Id: I3c0216435494cfb868a8dbbd1d2492bc584091a3
parents cb62f8be 310c1971
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);
            }
        }
    }