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

Commit 7ce7d716 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Add log to identify why the task is removed" into main

parents 4f932a1c 5e854305
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -821,4 +821,7 @@ public abstract class ActivityTaskManagerInternal {
    public abstract void requestHandoffTaskData(
        int taskId,
        @NonNull IHandoffTaskDataReceiver receiver);

    /** Requests to remove a Task by the given Task ID, along with the corresponding reason. */
    public abstract boolean removeTask(int taskId, @NonNull String reason);
}
+22 −10
Original line number Diff line number Diff line
@@ -2203,25 +2203,30 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    public boolean removeTask(int taskId) {
        mAmInternal.enforceCallingPermission(REMOVE_TASKS, "removeTask()");
        synchronized (mGlobalLock) {
            final int pid = Binder.getCallingPid();
            final long ident = Binder.clearCallingIdentity();
            try {
                return removeTask(taskId, "remove-by-pid#" + pid);
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
        }
    }

    boolean removeTask(int taskId, @NonNull String reason) {
        final Task task = mRootWindowContainer.anyTaskForId(taskId,
                MATCH_ATTACHED_TASK_OR_RECENT_TASKS);
        if (task == null) {
            Slog.w(TAG, "removeTask: No task remove with id=" + taskId);
            return false;
        }
                removeTask(task);
        removeTask(task, reason);
        return true;
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
        }
    }

    void removeTask(@NonNull Task task) {
    void removeTask(@NonNull Task task, @NonNull String reason) {
        if (task.isLeafTask()) {
            mTaskSupervisor.removeTask(task, true, REMOVE_FROM_RECENTS, "remove-task");
            mTaskSupervisor.removeTask(task, true, REMOVE_FROM_RECENTS, reason);
        } else {
            mTaskSupervisor.removeRootTask(task);
        }
@@ -7915,6 +7920,13 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
            @NonNull IHandoffTaskDataReceiver receiver) {
            ActivityTaskManagerService.this.requestHandoffTaskData(taskId, receiver);
        }

        @Override
        public boolean removeTask(int taskId, @NonNull String reason) {
            synchronized (ActivityTaskManagerService.this.mGlobalLock) {
                return ActivityTaskManagerService.this.removeTask(taskId, reason);
            }
        }
    }

    /** Cache the return value for {@link #isPip2ExperimentEnabled()} */
+1 −1
Original line number Diff line number Diff line
@@ -392,7 +392,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
                t.mTaskAppearedSent = false;
            }
            if (removeFromSystem) {
                mService.removeTask(t);
                mService.removeTask(t, "remove-by-organizer");
            }
            return taskAppearedSent;
        }
+2 −2
Original line number Diff line number Diff line
@@ -280,7 +280,7 @@ public class WindowOrganizerTests extends WindowTestsBase {
        rootTask.setTaskOrganizer(null);
        mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents();

        verify(mWm.mAtmService).removeTask(eq(rootTask));
        verify(mWm.mAtmService).removeTask(eq(rootTask), any());
    }

    @Test
@@ -298,7 +298,7 @@ public class WindowOrganizerTests extends WindowTestsBase {
        rootTask.setTaskOrganizer(null);
        mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents();

        verify(mWm.mAtmService, never()).removeTask(eq(rootTask));
        verify(mWm.mAtmService, never()).removeTask(eq(rootTask), any());
    }

    @Test