Loading services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +3 −0 Original line number Diff line number Diff line Loading @@ -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); } services/core/java/com/android/server/wm/ActivityTaskManagerService.java +22 −10 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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()} */ Loading services/core/java/com/android/server/wm/TaskOrganizerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +2 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading
services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +3 −0 Original line number Diff line number Diff line Loading @@ -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); }
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +22 −10 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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()} */ Loading
services/core/java/com/android/server/wm/TaskOrganizerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading
services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +2 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading