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

Commit 4091a474 authored by Garfield Tan's avatar Garfield Tan
Browse files

Add a method to obtain task info with intent extra

Also change boolean parameters to bitwise flags to clean up the
signature. Fixed the unit test in RunningTasksTest because it didn't
set up the test correctly.

Bug: 185492118
Test: atest RunningTasksTest
Change-Id: Id6771c48de2e219acd998b39f82a71ed6e0c59a2
parent 0cd1de22
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -400,8 +400,18 @@ public class ActivityTaskManager {
     */
    public List<ActivityManager.RunningTaskInfo> getTasks(
            int maxNum, boolean filterOnlyVisibleRecents) {
        return getTasks(maxNum, filterOnlyVisibleRecents, false /* keepIntentExtra */);
    }

    /**
     * @return List of running tasks that can be filtered by visibility in recents and keep intent
     * extra.
     * @hide
     */
    public List<ActivityManager.RunningTaskInfo> getTasks(
            int maxNum, boolean filterOnlyVisibleRecents, boolean keepIntentExtra) {
        try {
            return getService().getTasks(maxNum, filterOnlyVisibleRecents);
            return getService().getTasks(maxNum, filterOnlyVisibleRecents, keepIntentExtra);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+2 −1
Original line number Diff line number Diff line
@@ -148,7 +148,8 @@ interface IActivityTaskManager {
    void setFocusedTask(int taskId);
    boolean removeTask(int taskId);
    void removeAllVisibleRecentTasks();
    List<ActivityManager.RunningTaskInfo> getTasks(int maxNum, boolean filterOnlyVisibleRecents);
    List<ActivityManager.RunningTaskInfo> getTasks(int maxNum, boolean filterOnlyVisibleRecents,
            boolean keepIntentExtra);
    void moveTaskToFront(in IApplicationThread app, in String callingPackage, int task,
            int flags, in Bundle options);
    ParceledListSlice<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags,
+1 −1
Original line number Diff line number Diff line
@@ -5750,7 +5750,7 @@ public class ActivityManagerService extends IActivityManager.Stub
    @Override
    public List<RunningTaskInfo> getTasks(int maxNum) {
        return mActivityTaskManager.getTasks(maxNum, false /* filterForVisibleRecents */);
        return mActivityTaskManager.getTasks(maxNum);
    }
    @Override
+18 −5
Original line number Diff line number Diff line
@@ -2103,8 +2103,16 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        }
    }

    List<ActivityManager.RunningTaskInfo> getTasks(int maxNum) {
        return getTasks(maxNum, false /* filterForVisibleRecents */);
    /**
     * Gets info of running tasks up to the given number.
     *
     * @param maxNum the maximum number of task info returned by this method. If the total number of
     *               running tasks is larger than it then there is no guarantee which task will be
     *               left out.
     * @return a list of {@link ActivityManager.RunningTaskInfo} with up to {@code maxNum} items
     */
    public List<ActivityManager.RunningTaskInfo> getTasks(int maxNum) {
        return getTasks(maxNum, false /* filterForVisibleRecents */, false /* keepIntentExtra */);
    }

    /**
@@ -2113,10 +2121,14 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
     */
    @Override
    public List<ActivityManager.RunningTaskInfo> getTasks(int maxNum,
            boolean filterOnlyVisibleRecents) {
            boolean filterOnlyVisibleRecents, boolean keepIntentExtra) {
        final int callingUid = Binder.getCallingUid();
        final int callingPid = Binder.getCallingPid();

        int flags = filterOnlyVisibleRecents ? RunningTasks.FLAG_FILTER_ONLY_VISIBLE_RECENTS : 0;
        flags |= (keepIntentExtra ? RunningTasks.FLAG_KEEP_INTENT_EXTRA : 0);
        final boolean crossUser = isCrossUserAllowed(callingPid, callingUid);
        flags |= (crossUser ? RunningTasks.FLAG_CROSS_USERS : 0);
        final int[] profileIds = getUserManager().getProfileIds(
                UserHandle.getUserId(callingUid), true);
        ArraySet<Integer> callingProfileIds = new ArraySet<>();
@@ -2129,8 +2141,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
            if (DEBUG_ALL) Slog.v(TAG, "getTasks: max=" + maxNum);

            final boolean allowed = isGetTasksAllowed("getTasks", callingPid, callingUid);
            mRootWindowContainer.getRunningTasks(maxNum, list, filterOnlyVisibleRecents, callingUid,
                    allowed, crossUser, callingProfileIds);
            flags |= (allowed ? RunningTasks.FLAG_ALLOWED : 0);
            mRootWindowContainer.getRunningTasks(
                    maxNum, list, flags, callingUid, callingProfileIds);
        }

        return list;
+3 −4
Original line number Diff line number Diff line
@@ -3474,10 +3474,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent>

    @VisibleForTesting
    void getRunningTasks(int maxNum, List<ActivityManager.RunningTaskInfo> list,
            boolean filterOnlyVisibleRecents, int callingUid, boolean allowed, boolean crossUser,
            ArraySet<Integer> profileIds) {
        mTaskSupervisor.getRunningTasks().getTasks(maxNum, list, filterOnlyVisibleRecents, this,
                callingUid, allowed, crossUser, profileIds);
            int flags, int callingUid, ArraySet<Integer> profileIds) {
        mTaskSupervisor.getRunningTasks().getTasks(maxNum, list, flags, this, callingUid,
                profileIds);
    }

    void startPowerModeLaunchIfNeeded(boolean forceSend, ActivityRecord targetActivity) {
Loading