Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +4 −2 Original line number Diff line number Diff line Loading @@ -705,14 +705,16 @@ public abstract class WMShellModule { Transitions transitions, Optional<RecentTasksController> recentTasksController, HomeTransitionObserver homeTransitionObserver, DisplayController displayController) { DisplayController displayController, DesksOrganizer desksOrganizer) { return new RecentsTransitionHandler( shellInit, shellTaskOrganizer, transitions, recentTasksController.orElse(null), homeTransitionObserver, displayController); displayController, desksOrganizer); } // Loading libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java +58 −13 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.android.wm.shell.Flags; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.shared.R; import com.android.wm.shell.shared.TransitionUtil; Loading Loading @@ -125,6 +126,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, private final HomeTransitionObserver mHomeTransitionObserver; private @Nullable Color mBackgroundColor; private final DisplayController mDisplayController; private final DesksOrganizer mDesksOrganizer; public RecentsTransitionHandler( @NonNull ShellInit shellInit, Loading @@ -132,13 +134,15 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, @NonNull Transitions transitions, @Nullable RecentTasksController recentTasksController, @NonNull HomeTransitionObserver homeTransitionObserver, @NonNull DisplayController displayController) { @NonNull DisplayController displayController, @NonNull DesksOrganizer desksOrganizer) { mShellTaskOrganizer = shellTaskOrganizer; mTransitions = transitions; mExecutor = transitions.getMainExecutor(); mRecentTasksController = recentTasksController; mHomeTransitionObserver = homeTransitionObserver; mDisplayController = displayController; mDesksOrganizer = desksOrganizer; if (recentTasksController == null) return; shellInit.addInitCallback(this::onInit, this); } Loading Loading @@ -394,6 +398,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, * These need to be ordered since the order must be restored if there is no task-switch. */ private ArrayList<TaskState> mPausingTasks = null; /** * The desk that we are switching away from via this transition. Upon finish it will become * invisible. It may be included in {@link RecentsController#mPausingTasks}. */ private WindowContainerToken mPausingDesk = null; /** * List of tasks were pausing but closed in a subsequent merged transition. If a Loading Loading @@ -579,6 +588,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, } mFinishTransaction = null; mPausingTasks = null; mPausingDesk = null; mClosingTasks = null; mOpeningTasks = null; mInfo = null; Loading Loading @@ -737,6 +747,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, mFinishCB = finishCB; mFinishTransaction = finishT; mPausingTasks = new ArrayList<>(); mPausingDesk = null; mClosingTasks = new ArrayList<>(); mOpeningTasks = new ArrayList<>(); mLeashMap = new ArrayMap<>(); Loading Loading @@ -818,11 +829,19 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, // Root tasks if (TransitionUtil.isClosingType(change.getMode())) { final int layer = aboveLayers - i; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing taskId=%d at layer=%d", taskInfo.taskId, layer); // raise closing (pausing) task to "above" layer so it isn't covered t.setLayer(change.getLeash(), layer); mPausingTasks.add(new TaskState(change, null /* leash */)); if (mDesksOrganizer.isDeskChange(change)) { mPausingDesk = change.getContainer(); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing deskId=%d at layer=%d", taskInfo.taskId, layer); } else { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing taskId=%d at layer=%d", taskInfo.taskId, layer); } } else if (TransitionUtil.isOpeningType(change.getMode())) { final int layer = belowLayers - i; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, Loading Loading @@ -1014,6 +1033,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, "[%d] RecentsController.merge", mInstanceId); // Keep all tasks in one list because order matters. ArrayList<TransitionInfo.Change> openingTasks = null; TransitionInfo.Change openingDesk = null; IntArray openingTaskIsLeafs = null; ArrayList<TransitionInfo.Change> closingTasks = null; mOpeningSeparateHome = false; Loading Loading @@ -1059,8 +1079,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, "[%d] %s recents", mInstanceId, chgTypeMsg); recentsOpening = change; } else if (isRootTask || isLeafTask) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "[%d] %s task", mInstanceId, chgTypeMsg); String containerTypeMsg = "task"; if (isLeafTask && taskInfo.topActivityType == ACTIVITY_TYPE_HOME) { // This is usually a 3p launcher mOpeningSeparateHome = true; Loading @@ -1070,7 +1089,13 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, openingTaskIsLeafs = new IntArray(); } openingTasks.add(change); if (mDesksOrganizer.isDeskChange(change)) { openingDesk = change; containerTypeMsg = "desk"; } openingTaskIsLeafs.add(isLeafTask ? 1 : 0); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "[%d] %s %s", mInstanceId, chgTypeMsg, containerTypeMsg); } } else if (TransitionUtil.isClosingType(change.getMode())) { if (isRecentsTask) { Loading Loading @@ -1200,7 +1225,14 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, break; } } boolean onlyOpeningPausedTasks = true; // An initially paused and now opening desk means we're returning to the desk. We // save it here to identify whether any of the opening tasks below belong to the // desk, and are thus part of a returning-to-desk operation. final TransitionInfo.Change openingPausedDesk = mPausingDesk != null && openingDesk != null && mPausingDesk.equals(openingDesk.getContainer()) ? openingDesk : null; boolean onlyOpeningPausedTasksOrPausedDesk = true; for (int i = 0; i < openingTasks.size(); ++i) { final TransitionInfo.Change change = openingTasks.get(i); final boolean isLeaf = openingTaskIsLeafs.get(i) == 1; Loading Loading @@ -1228,7 +1260,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, } final TaskState pausingTask = mPausingTasks.remove(pausingIdx); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening pausing %staskId=%d", isLeaf ? "leaf " : "", " opening pausing %staskId=%d", isLeaf ? "leaf " : "non-leaf ", pausingTask.mTaskInfo.taskId); mOpeningTasks.add(pausingTask); // Setup hides opening tasks initially, so make it visible again (since we Loading Loading @@ -1259,11 +1291,24 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, // Hide the animation leash, let the listener show it startT.hide(target.leash); } mOpeningTasks.add(new TaskState(change, target.leash)); if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue()) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening new leaf taskId=%d wasClosing=%b", target.taskId, wasClosing); mOpeningTasks.add(new TaskState(change, target.leash)); onlyOpeningPausedTasks = false; onlyOpeningPausedTasksOrPausedDesk = false; } else { final boolean childOfOpeningPausedDesk = openingPausedDesk != null && change.getTaskInfo().parentTaskId == openingPausedDesk.getTaskInfo().taskId; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening new leaf taskId=%d wasClosing=%b " + "childOfOpeningPausedDesk=%b", target.taskId, wasClosing, childOfOpeningPausedDesk); if (!childOfOpeningPausedDesk) { onlyOpeningPausedTasksOrPausedDesk = false; } } } else { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening new taskId=%d", change.getTaskInfo().taskId); Loading @@ -1272,11 +1317,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, // is only animating the leafs. startT.show(change.getLeash()); mOpeningTasks.add(new TaskState(change, null)); onlyOpeningPausedTasks = false; onlyOpeningPausedTasksOrPausedDesk = false; } } didMergeThings = true; if (!onlyOpeningPausedTasks) { if (!onlyOpeningPausedTasksOrPausedDesk) { // If we are only opening paused leaf tasks, then we aren't actually quick // switching or launching a new task from overview, and if Launcher requests to // finish(toHome=false) as a response to the pausing tasks being opened again, Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer; import com.android.wm.shell.shared.R; import com.android.wm.shell.shared.desktopmode.FakeDesktopState; import com.android.wm.shell.sysui.ShellCommandHandler; Loading Loading @@ -137,6 +138,8 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { private Transitions mTransitions; @Mock private UserManager mUserManager; @Mock private DesksOrganizer mDesksOrganizer; @Mock private DesktopRepository mDesktopRepository; @Mock private DisplayController mDisplayController; Loading Loading @@ -189,7 +192,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { doReturn(mMainExecutor).when(mTransitions).getMainExecutor(); mRecentsTransitionHandler = new RecentsTransitionHandler(mShellInit, mShellTaskOrganizer, mTransitions, mRecentTasksController, mock(HomeTransitionObserver.class), mDisplayController); mDisplayController, mDesksOrganizer); // By default use a mock finish transaction since we are sending transitions that don't have // real surface controls mRecentsTransitionHandler.setFinishTransactionSupplier( Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java +2 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer; import com.android.wm.shell.recents.IRecentsAnimationRunner; import com.android.wm.shell.recents.RecentTasksController; import com.android.wm.shell.recents.RecentsTransitionHandler; Loading Loading @@ -1326,7 +1327,7 @@ public class ShellTransitionTests extends ShellTestCase { final RecentsTransitionHandler recentsHandler = new RecentsTransitionHandler(shellInit, mock(ShellTaskOrganizer.class), transitions, mockRecentsTaskController, mock(HomeTransitionObserver.class), mock(DisplayController.class)); mock(DisplayController.class), mock(DesksOrganizer.class)); recentsHandler.setFinishTransactionSupplier( () -> mock(SurfaceControl.Transaction.class)); transitions.replaceDefaultHandlerForTest(mDefaultHandler); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +4 −2 Original line number Diff line number Diff line Loading @@ -705,14 +705,16 @@ public abstract class WMShellModule { Transitions transitions, Optional<RecentTasksController> recentTasksController, HomeTransitionObserver homeTransitionObserver, DisplayController displayController) { DisplayController displayController, DesksOrganizer desksOrganizer) { return new RecentsTransitionHandler( shellInit, shellTaskOrganizer, transitions, recentTasksController.orElse(null), homeTransitionObserver, displayController); displayController, desksOrganizer); } // Loading
libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java +58 −13 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.android.wm.shell.Flags; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.shared.R; import com.android.wm.shell.shared.TransitionUtil; Loading Loading @@ -125,6 +126,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, private final HomeTransitionObserver mHomeTransitionObserver; private @Nullable Color mBackgroundColor; private final DisplayController mDisplayController; private final DesksOrganizer mDesksOrganizer; public RecentsTransitionHandler( @NonNull ShellInit shellInit, Loading @@ -132,13 +134,15 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, @NonNull Transitions transitions, @Nullable RecentTasksController recentTasksController, @NonNull HomeTransitionObserver homeTransitionObserver, @NonNull DisplayController displayController) { @NonNull DisplayController displayController, @NonNull DesksOrganizer desksOrganizer) { mShellTaskOrganizer = shellTaskOrganizer; mTransitions = transitions; mExecutor = transitions.getMainExecutor(); mRecentTasksController = recentTasksController; mHomeTransitionObserver = homeTransitionObserver; mDisplayController = displayController; mDesksOrganizer = desksOrganizer; if (recentTasksController == null) return; shellInit.addInitCallback(this::onInit, this); } Loading Loading @@ -394,6 +398,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, * These need to be ordered since the order must be restored if there is no task-switch. */ private ArrayList<TaskState> mPausingTasks = null; /** * The desk that we are switching away from via this transition. Upon finish it will become * invisible. It may be included in {@link RecentsController#mPausingTasks}. */ private WindowContainerToken mPausingDesk = null; /** * List of tasks were pausing but closed in a subsequent merged transition. If a Loading Loading @@ -579,6 +588,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, } mFinishTransaction = null; mPausingTasks = null; mPausingDesk = null; mClosingTasks = null; mOpeningTasks = null; mInfo = null; Loading Loading @@ -737,6 +747,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, mFinishCB = finishCB; mFinishTransaction = finishT; mPausingTasks = new ArrayList<>(); mPausingDesk = null; mClosingTasks = new ArrayList<>(); mOpeningTasks = new ArrayList<>(); mLeashMap = new ArrayMap<>(); Loading Loading @@ -818,11 +829,19 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, // Root tasks if (TransitionUtil.isClosingType(change.getMode())) { final int layer = aboveLayers - i; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing taskId=%d at layer=%d", taskInfo.taskId, layer); // raise closing (pausing) task to "above" layer so it isn't covered t.setLayer(change.getLeash(), layer); mPausingTasks.add(new TaskState(change, null /* leash */)); if (mDesksOrganizer.isDeskChange(change)) { mPausingDesk = change.getContainer(); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing deskId=%d at layer=%d", taskInfo.taskId, layer); } else { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing taskId=%d at layer=%d", taskInfo.taskId, layer); } } else if (TransitionUtil.isOpeningType(change.getMode())) { final int layer = belowLayers - i; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, Loading Loading @@ -1014,6 +1033,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, "[%d] RecentsController.merge", mInstanceId); // Keep all tasks in one list because order matters. ArrayList<TransitionInfo.Change> openingTasks = null; TransitionInfo.Change openingDesk = null; IntArray openingTaskIsLeafs = null; ArrayList<TransitionInfo.Change> closingTasks = null; mOpeningSeparateHome = false; Loading Loading @@ -1059,8 +1079,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, "[%d] %s recents", mInstanceId, chgTypeMsg); recentsOpening = change; } else if (isRootTask || isLeafTask) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "[%d] %s task", mInstanceId, chgTypeMsg); String containerTypeMsg = "task"; if (isLeafTask && taskInfo.topActivityType == ACTIVITY_TYPE_HOME) { // This is usually a 3p launcher mOpeningSeparateHome = true; Loading @@ -1070,7 +1089,13 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, openingTaskIsLeafs = new IntArray(); } openingTasks.add(change); if (mDesksOrganizer.isDeskChange(change)) { openingDesk = change; containerTypeMsg = "desk"; } openingTaskIsLeafs.add(isLeafTask ? 1 : 0); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "[%d] %s %s", mInstanceId, chgTypeMsg, containerTypeMsg); } } else if (TransitionUtil.isClosingType(change.getMode())) { if (isRecentsTask) { Loading Loading @@ -1200,7 +1225,14 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, break; } } boolean onlyOpeningPausedTasks = true; // An initially paused and now opening desk means we're returning to the desk. We // save it here to identify whether any of the opening tasks below belong to the // desk, and are thus part of a returning-to-desk operation. final TransitionInfo.Change openingPausedDesk = mPausingDesk != null && openingDesk != null && mPausingDesk.equals(openingDesk.getContainer()) ? openingDesk : null; boolean onlyOpeningPausedTasksOrPausedDesk = true; for (int i = 0; i < openingTasks.size(); ++i) { final TransitionInfo.Change change = openingTasks.get(i); final boolean isLeaf = openingTaskIsLeafs.get(i) == 1; Loading Loading @@ -1228,7 +1260,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, } final TaskState pausingTask = mPausingTasks.remove(pausingIdx); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening pausing %staskId=%d", isLeaf ? "leaf " : "", " opening pausing %staskId=%d", isLeaf ? "leaf " : "non-leaf ", pausingTask.mTaskInfo.taskId); mOpeningTasks.add(pausingTask); // Setup hides opening tasks initially, so make it visible again (since we Loading Loading @@ -1259,11 +1291,24 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, // Hide the animation leash, let the listener show it startT.hide(target.leash); } mOpeningTasks.add(new TaskState(change, target.leash)); if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue()) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening new leaf taskId=%d wasClosing=%b", target.taskId, wasClosing); mOpeningTasks.add(new TaskState(change, target.leash)); onlyOpeningPausedTasks = false; onlyOpeningPausedTasksOrPausedDesk = false; } else { final boolean childOfOpeningPausedDesk = openingPausedDesk != null && change.getTaskInfo().parentTaskId == openingPausedDesk.getTaskInfo().taskId; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening new leaf taskId=%d wasClosing=%b " + "childOfOpeningPausedDesk=%b", target.taskId, wasClosing, childOfOpeningPausedDesk); if (!childOfOpeningPausedDesk) { onlyOpeningPausedTasksOrPausedDesk = false; } } } else { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " opening new taskId=%d", change.getTaskInfo().taskId); Loading @@ -1272,11 +1317,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, // is only animating the leafs. startT.show(change.getLeash()); mOpeningTasks.add(new TaskState(change, null)); onlyOpeningPausedTasks = false; onlyOpeningPausedTasksOrPausedDesk = false; } } didMergeThings = true; if (!onlyOpeningPausedTasks) { if (!onlyOpeningPausedTasksOrPausedDesk) { // If we are only opening paused leaf tasks, then we aren't actually quick // switching or launching a new task from overview, and if Launcher requests to // finish(toHome=false) as a response to the pausing tasks being opened again, Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer; import com.android.wm.shell.shared.R; import com.android.wm.shell.shared.desktopmode.FakeDesktopState; import com.android.wm.shell.sysui.ShellCommandHandler; Loading Loading @@ -137,6 +138,8 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { private Transitions mTransitions; @Mock private UserManager mUserManager; @Mock private DesksOrganizer mDesksOrganizer; @Mock private DesktopRepository mDesktopRepository; @Mock private DisplayController mDisplayController; Loading Loading @@ -189,7 +192,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { doReturn(mMainExecutor).when(mTransitions).getMainExecutor(); mRecentsTransitionHandler = new RecentsTransitionHandler(mShellInit, mShellTaskOrganizer, mTransitions, mRecentTasksController, mock(HomeTransitionObserver.class), mDisplayController); mDisplayController, mDesksOrganizer); // By default use a mock finish transaction since we are sending transitions that don't have // real surface controls mRecentsTransitionHandler.setFinishTransactionSupplier( Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java +2 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer; import com.android.wm.shell.recents.IRecentsAnimationRunner; import com.android.wm.shell.recents.RecentTasksController; import com.android.wm.shell.recents.RecentsTransitionHandler; Loading Loading @@ -1326,7 +1327,7 @@ public class ShellTransitionTests extends ShellTestCase { final RecentsTransitionHandler recentsHandler = new RecentsTransitionHandler(shellInit, mock(ShellTaskOrganizer.class), transitions, mockRecentsTaskController, mock(HomeTransitionObserver.class), mock(DisplayController.class)); mock(DisplayController.class), mock(DesksOrganizer.class)); recentsHandler.setFinishTransactionSupplier( () -> mock(SurfaceControl.Transaction.class)); transitions.replaceDefaultHandlerForTest(mDefaultHandler); Loading