Loading libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +11 −1 Original line number Diff line number Diff line Loading @@ -624,7 +624,8 @@ public class ShellTaskOrganizer extends TaskOrganizer { final TaskAppearedInfo data = mTasks.get(taskInfo.taskId); final TaskListener oldListener = getTaskListener(data.getTaskInfo()); final TaskListener newListener = getTaskListener(taskInfo); final TaskListener newListener = getTaskListener(taskInfo, true /* removeLaunchCookieIfNeeded */); mTasks.put(taskInfo.taskId, new TaskAppearedInfo(taskInfo, data.getLeash())); final boolean updated = updateTaskListenerIfNeeded( taskInfo, data.getLeash(), oldListener, newListener); Loading Loading @@ -767,6 +768,8 @@ public class ShellTaskOrganizer extends TaskOrganizer { private boolean updateTaskListenerIfNeeded(RunningTaskInfo taskInfo, SurfaceControl leash, TaskListener oldListener, TaskListener newListener) { if (oldListener == newListener) return false; ProtoLog.v(WM_SHELL_TASK_ORG, " Migrating from listener %s to %s", oldListener, newListener); // TODO: We currently send vanished/appeared as the task moves between types, but // we should consider adding a different mode-changed callback if (oldListener != null) { Loading Loading @@ -908,6 +911,8 @@ public class ShellTaskOrganizer extends TaskOrganizer { if (listener == null) continue; if (removeLaunchCookieIfNeeded) { ProtoLog.v(WM_SHELL_TASK_ORG, "Migrating cookie listener to task: taskId=%d", runningTaskInfo.taskId); // Remove the cookie and add the listener. mLaunchCookieToListener.remove(cookie); mTaskListeners.put(taskId, listener); Loading @@ -930,6 +935,11 @@ public class ShellTaskOrganizer extends TaskOrganizer { return mTaskListeners.get(taskListenerType); } @VisibleForTesting boolean hasTaskListener(int taskId) { return mTaskListeners.contains(taskId); } @VisibleForTesting static @TaskListenerType int taskInfoToTaskListenerType(RunningTaskInfo runningTaskInfo) { switch (runningTaskInfo.getWindowingMode()) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ public enum ShellProtoLogGroup implements IProtoLogGroup { WM_SHELL_INIT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true, Consts.TAG_WM_SHELL), WM_SHELL_TASK_ORG(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM_SHELL), "ShellTaskOrganizer"), WM_SHELL_TRANSITIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true, Consts.TAG_WM_SHELL), WM_SHELL_IME_CONTROLLER(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTaskOrganizerTests.java +18 −0 Original line number Diff line number Diff line Loading @@ -323,6 +323,24 @@ public class ShellTaskOrganizerTests extends ShellTestCase { assertFalse(mwListener.appeared.contains(task1)); } @Test public void testMigrateCookieToTaskOnInfoChanged() { RunningTaskInfo task1 = createTaskInfo(/* taskId= */ 1, WINDOWING_MODE_MULTI_WINDOW); mOrganizer.onTaskAppeared(task1, /* leash= */ null); TrackingTaskListener mwListener = new TrackingTaskListener(); mOrganizer.addListenerForType(mwListener, TASK_LISTENER_TYPE_MULTI_WINDOW); TrackingTaskListener cookieListener = new TrackingTaskListener(); IBinder cookie = new Binder(); task1.addLaunchCookie(cookie); mOrganizer.setPendingLaunchCookieListener(cookie, cookieListener); mOrganizer.onTaskInfoChanged(task1); assertTrue(mOrganizer.hasTaskListener(task1.taskId)); } @Test public void testGetTaskListener() { RunningTaskInfo task1 = createTaskInfo(/* taskId= */ 1, WINDOWING_MODE_MULTI_WINDOW); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +11 −1 Original line number Diff line number Diff line Loading @@ -624,7 +624,8 @@ public class ShellTaskOrganizer extends TaskOrganizer { final TaskAppearedInfo data = mTasks.get(taskInfo.taskId); final TaskListener oldListener = getTaskListener(data.getTaskInfo()); final TaskListener newListener = getTaskListener(taskInfo); final TaskListener newListener = getTaskListener(taskInfo, true /* removeLaunchCookieIfNeeded */); mTasks.put(taskInfo.taskId, new TaskAppearedInfo(taskInfo, data.getLeash())); final boolean updated = updateTaskListenerIfNeeded( taskInfo, data.getLeash(), oldListener, newListener); Loading Loading @@ -767,6 +768,8 @@ public class ShellTaskOrganizer extends TaskOrganizer { private boolean updateTaskListenerIfNeeded(RunningTaskInfo taskInfo, SurfaceControl leash, TaskListener oldListener, TaskListener newListener) { if (oldListener == newListener) return false; ProtoLog.v(WM_SHELL_TASK_ORG, " Migrating from listener %s to %s", oldListener, newListener); // TODO: We currently send vanished/appeared as the task moves between types, but // we should consider adding a different mode-changed callback if (oldListener != null) { Loading Loading @@ -908,6 +911,8 @@ public class ShellTaskOrganizer extends TaskOrganizer { if (listener == null) continue; if (removeLaunchCookieIfNeeded) { ProtoLog.v(WM_SHELL_TASK_ORG, "Migrating cookie listener to task: taskId=%d", runningTaskInfo.taskId); // Remove the cookie and add the listener. mLaunchCookieToListener.remove(cookie); mTaskListeners.put(taskId, listener); Loading @@ -930,6 +935,11 @@ public class ShellTaskOrganizer extends TaskOrganizer { return mTaskListeners.get(taskListenerType); } @VisibleForTesting boolean hasTaskListener(int taskId) { return mTaskListeners.contains(taskId); } @VisibleForTesting static @TaskListenerType int taskInfoToTaskListenerType(RunningTaskInfo runningTaskInfo) { switch (runningTaskInfo.getWindowingMode()) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ public enum ShellProtoLogGroup implements IProtoLogGroup { WM_SHELL_INIT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true, Consts.TAG_WM_SHELL), WM_SHELL_TASK_ORG(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM_SHELL), "ShellTaskOrganizer"), WM_SHELL_TRANSITIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true, Consts.TAG_WM_SHELL), WM_SHELL_IME_CONTROLLER(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTaskOrganizerTests.java +18 −0 Original line number Diff line number Diff line Loading @@ -323,6 +323,24 @@ public class ShellTaskOrganizerTests extends ShellTestCase { assertFalse(mwListener.appeared.contains(task1)); } @Test public void testMigrateCookieToTaskOnInfoChanged() { RunningTaskInfo task1 = createTaskInfo(/* taskId= */ 1, WINDOWING_MODE_MULTI_WINDOW); mOrganizer.onTaskAppeared(task1, /* leash= */ null); TrackingTaskListener mwListener = new TrackingTaskListener(); mOrganizer.addListenerForType(mwListener, TASK_LISTENER_TYPE_MULTI_WINDOW); TrackingTaskListener cookieListener = new TrackingTaskListener(); IBinder cookie = new Binder(); task1.addLaunchCookie(cookie); mOrganizer.setPendingLaunchCookieListener(cookie, cookieListener); mOrganizer.onTaskInfoChanged(task1); assertTrue(mOrganizer.hasTaskListener(task1.taskId)); } @Test public void testGetTaskListener() { RunningTaskInfo task1 = createTaskInfo(/* taskId= */ 1, WINDOWING_MODE_MULTI_WINDOW); Loading