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

Commit 8874bca1 authored by Maryam Dehaini's avatar Maryam Dehaini
Browse files

Rename drag to desktop transitions

Rename and add comments to the methods called when user drags task into
desktop mode to clarify the roles of the connections between the
methods.

Bug: 291107449
Test: Builds and runs smoothly
Change-Id: I4d7cb318d26afac2208b262617822dc62e351e21
parent 6a703cdc
Loading
Loading
Loading
Loading
+21 −16
Original line number Diff line number Diff line
@@ -202,17 +202,18 @@ class DesktopTasksController(
    }

    /**
     * Moves a single task to freeform and sets the taskBounds to the passed in bounds,
     * startBounds
     * The first part of the animated move to desktop transition. Applies the changes to move task
     * to desktop mode and sets the taskBounds to the passed in bounds, startBounds. This is
     * followed with a call to {@link finishMoveToDesktop} or {@link cancelMoveToDesktop}.
     */
    fun moveToFreeform(
    fun startMoveToDesktop(
            taskInfo: RunningTaskInfo,
            startBounds: Rect,
            dragToDesktopValueAnimator: MoveToDesktopAnimator
    ) {
        KtProtoLog.v(
            WM_SHELL_DESKTOP_MODE,
            "DesktopTasksController: moveToFreeform with bounds taskId=%d",
            "DesktopTasksController: startMoveToDesktop taskId=%d",
            taskInfo.taskId
        )
        val wct = WindowContainerTransaction()
@@ -221,18 +222,21 @@ class DesktopTasksController(
        wct.setBounds(taskInfo.token, startBounds)

        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            enterDesktopTaskTransitionHandler.startMoveToFreeformAnimation(wct,
                    dragToDesktopValueAnimator, mOnAnimationFinishedCallback)
            enterDesktopTaskTransitionHandler.startMoveToDesktop(wct, dragToDesktopValueAnimator,
                    mOnAnimationFinishedCallback)
        } else {
            shellTaskOrganizer.applyTransaction(wct)
        }
    }

    /** Brings apps to front and sets freeform task bounds */
    private fun moveToDesktopWithAnimation(taskInfo: RunningTaskInfo, freeformBounds: Rect) {
    /**
     * The second part of the animated move to desktop transition, called after
     * {@link startMoveToDesktop}. Brings apps to front and sets freeform task bounds.
     */
    private fun finalizeMoveToDesktop(taskInfo: RunningTaskInfo, freeformBounds: Rect) {
        KtProtoLog.v(
            WM_SHELL_DESKTOP_MODE,
            "DesktopTasksController: moveToDesktop with animation taskId=%d",
            "DesktopTasksController: finalizeMoveToDesktop taskId=%d",
            taskInfo.taskId
        )
        val wct = WindowContainerTransaction()
@@ -241,8 +245,8 @@ class DesktopTasksController(
        wct.setBounds(taskInfo.token, freeformBounds)

        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            enterDesktopTaskTransitionHandler.startTransition(
                Transitions.TRANSIT_ENTER_DESKTOP_MODE, wct, mOnAnimationFinishedCallback)
            enterDesktopTaskTransitionHandler.finalizeMoveToDesktop(wct,
                    mOnAnimationFinishedCallback)
        } else {
            shellTaskOrganizer.applyTransaction(wct)
            releaseVisualIndicator()
@@ -272,13 +276,14 @@ class DesktopTasksController(
    }

    /**
     * Move a task to fullscreen after being dragged from fullscreen and released back into
     * status bar area
     * The second part of the animated move to desktop transition, called after
     * {@link startMoveToDesktop}. Move a task to fullscreen after being dragged from fullscreen
     * and released back into status bar area.
     */
    fun cancelMoveToFreeform(task: RunningTaskInfo, moveToDesktopAnimator: MoveToDesktopAnimator) {
    fun cancelMoveToDesktop(task: RunningTaskInfo, moveToDesktopAnimator: MoveToDesktopAnimator) {
        KtProtoLog.v(
            WM_SHELL_DESKTOP_MODE,
            "DesktopTasksController: cancelMoveToFreeform taskId=%d",
            "DesktopTasksController: cancelMoveToDesktop taskId=%d",
            task.taskId
        )
        val wct = WindowContainerTransaction()
@@ -784,7 +789,7 @@ class DesktopTasksController(
            taskInfo: RunningTaskInfo,
            freeformBounds: Rect
    ) {
        moveToDesktopWithAnimation(taskInfo, freeformBounds)
        finalizeMoveToDesktop(taskInfo, freeformBounds)
    }

    private fun getStatusBarHeight(taskInfo: RunningTaskInfo): Int {
+18 −6
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
     * @param wct WindowContainerTransaction for transition
     * @param onAnimationEndCallback to be called after animation
     */
    public void startTransition(@WindowManager.TransitionType int type,
    private void startTransition(@WindowManager.TransitionType int type,
            @NonNull WindowContainerTransaction wct,
            Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
        mOnAnimationFinishedCallback = onAnimationEndCallback;
@@ -88,17 +88,29 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
    }

    /**
     * Starts Transition of type TRANSIT_ENTER_FREEFORM
     * Starts Transition of type TRANSIT_START_MOVE_TO_DESKTOP_MODE
     * @param wct WindowContainerTransaction for transition
     * @param moveToDesktopAnimator Animator that shrinks and positions task during two part move
     *                              to desktop animation
     * @param onAnimationEndCallback to be called after animation
     */
    public void startMoveToFreeformAnimation(@NonNull WindowContainerTransaction wct,
    public void startMoveToDesktop(@NonNull WindowContainerTransaction wct,
            @NonNull MoveToDesktopAnimator moveToDesktopAnimator,
            Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
        mMoveToDesktopAnimator = moveToDesktopAnimator;
        startTransition(Transitions.TRANSIT_ENTER_FREEFORM, wct, onAnimationEndCallback);
        startTransition(Transitions.TRANSIT_START_MOVE_TO_DESKTOP_MODE, wct,
                onAnimationEndCallback);
    }

    /**
     * Starts Transition of type TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE
     * @param wct WindowContainerTransaction for transition
     * @param onAnimationEndCallback to be called after animation
     */
    public void finalizeMoveToDesktop(@NonNull WindowContainerTransaction wct,
            Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
        startTransition(Transitions.TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE, wct,
                onAnimationEndCallback);
    }

    /**
@@ -155,7 +167,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
        }

        final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
        if (type == Transitions.TRANSIT_ENTER_FREEFORM
        if (type == Transitions.TRANSIT_START_MOVE_TO_DESKTOP_MODE
                && taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM) {
            // Transitioning to freeform but keeping fullscreen bounds, so the crop is set
            // to null and we don't require an animation
@@ -182,7 +194,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
        }

        Rect endBounds = change.getEndAbsBounds();
        if (type == Transitions.TRANSIT_ENTER_DESKTOP_MODE
        if (type == Transitions.TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE
                && taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM
                && !endBounds.isEmpty()) {
            // This Transition animates a task to freeform bounds after being dragged into freeform
+6 −4
Original line number Diff line number Diff line
@@ -149,11 +149,13 @@ public class Transitions implements RemoteCallable<Transitions>,
    /** Transition type for maximize to freeform transition. */
    public static final int TRANSIT_RESTORE_FROM_MAXIMIZE = WindowManager.TRANSIT_FIRST_CUSTOM + 9;

    /** Transition type to freeform in desktop mode. */
    public static final int TRANSIT_ENTER_FREEFORM = WindowManager.TRANSIT_FIRST_CUSTOM + 10;
    /** Transition type for starting the move to desktop mode. */
    public static final int TRANSIT_START_MOVE_TO_DESKTOP_MODE =
            WindowManager.TRANSIT_FIRST_CUSTOM + 10;

    /** Transition type to freeform in desktop mode. */
    public static final int TRANSIT_ENTER_DESKTOP_MODE = WindowManager.TRANSIT_FIRST_CUSTOM + 11;
    /** Transition type for finalizing the move to desktop mode. */
    public static final int TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE =
            WindowManager.TRANSIT_FIRST_CUSTOM + 11;

    /** Transition type to fullscreen from desktop mode. */
    public static final int TRANSIT_EXIT_DESKTOP_MODE = WindowManager.TRANSIT_FIRST_CUSTOM + 12;
+3 −3
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
            @NonNull TransitionInfo info,
            @NonNull TransitionInfo.Change change) {
        if (change.getMode() == WindowManager.TRANSIT_CHANGE
                && (info.getType() == Transitions.TRANSIT_ENTER_DESKTOP_MODE
                && (info.getType() == Transitions.TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE
                || info.getType() == Transitions.TRANSIT_CANCEL_ENTERING_DESKTOP_MODE
                || info.getType() == Transitions.TRANSIT_EXIT_DESKTOP_MODE
                || info.getType() == Transitions.TRANSIT_DESKTOP_MODE_TOGGLE_RESIZE)) {
@@ -616,7 +616,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
                    } else if (mMoveToDesktopAnimator != null) {
                        relevantDecor.incrementRelayoutBlock();
                        mDesktopTasksController.ifPresent(
                                c -> c.cancelMoveToFreeform(relevantDecor.mTaskInfo,
                                c -> c.cancelMoveToDesktop(relevantDecor.mTaskInfo,
                                        mMoveToDesktopAnimator));
                        mMoveToDesktopAnimator = null;
                        return;
@@ -643,7 +643,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
                                    mDragToDesktopAnimationStartBounds, relevantDecor.mTaskInfo,
                                    relevantDecor.mTaskSurface);
                            mDesktopTasksController.ifPresent(
                                    c -> c.moveToFreeform(relevantDecor.mTaskInfo,
                                    c -> c.startMoveToDesktop(relevantDecor.mTaskInfo,
                                            mDragToDesktopAnimationStartBounds,
                                            mMoveToDesktopAnimator));
                            mMoveToDesktopAnimator.startAnimation();
+8 −6
Original line number Diff line number Diff line
@@ -99,16 +99,17 @@ public class EnterDesktopTaskTransitionHandlerTest {
        final int taskId = 1;
        WindowContainerTransaction wct = new WindowContainerTransaction();
        doReturn(mToken).when(mTransitions)
                .startTransition(Transitions.TRANSIT_ENTER_FREEFORM, wct,
                .startTransition(Transitions.TRANSIT_START_MOVE_TO_DESKTOP_MODE, wct,
                        mEnterDesktopTaskTransitionHandler);
        doReturn(taskId).when(mMoveToDesktopAnimator).getTaskId();

        mEnterDesktopTaskTransitionHandler.startMoveToFreeformAnimation(wct,
        mEnterDesktopTaskTransitionHandler.startMoveToDesktop(wct,
                mMoveToDesktopAnimator, null);

        TransitionInfo.Change change =
                createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FREEFORM);
        TransitionInfo info = createTransitionInfo(Transitions.TRANSIT_ENTER_FREEFORM, change);
        TransitionInfo info = createTransitionInfo(Transitions.TRANSIT_START_MOVE_TO_DESKTOP_MODE,
                change);


        assertTrue(mEnterDesktopTaskTransitionHandler
@@ -120,17 +121,18 @@ public class EnterDesktopTaskTransitionHandlerTest {

    @Test
    public void testTransitEnterDesktopModeAnimation() throws Throwable {
        final int transitionType = Transitions.TRANSIT_ENTER_DESKTOP_MODE;
        final int transitionType = Transitions.TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE;
        final int taskId = 1;
        WindowContainerTransaction wct = new WindowContainerTransaction();
        doReturn(mToken).when(mTransitions)
                .startTransition(transitionType, wct, mEnterDesktopTaskTransitionHandler);
        mEnterDesktopTaskTransitionHandler.startTransition(transitionType, wct, null);
        mEnterDesktopTaskTransitionHandler.finalizeMoveToDesktop(wct, null);

        TransitionInfo.Change change =
                createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FREEFORM);
        change.setEndAbsBounds(new Rect(0, 0, 1, 1));
        TransitionInfo info = createTransitionInfo(Transitions.TRANSIT_ENTER_DESKTOP_MODE, change);
        TransitionInfo info = createTransitionInfo(
                Transitions.TRANSIT_FINALIZE_MOVE_TO_DESKTOP_MODE, change);

        runOnUiThread(() -> {
            try {