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

Commit 3bd08a69 authored by Vineeth Bhende's avatar Vineeth Bhende Committed by Android (Google) Code Review
Browse files

Merge "Add jank instrumentation for exit desktop mode" into main

parents 6ee9c7aa d58dd1fa
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -585,9 +585,10 @@ public abstract class WMShellModule {
    @Provides
    static ExitDesktopTaskTransitionHandler provideExitDesktopTaskTransitionHandler(
            Transitions transitions,
            Context context
    ) {
        return new ExitDesktopTaskTransitionHandler(transitions, context);
            Context context,
            InteractionJankMonitor interactionJankMonitor) {
        return new ExitDesktopTaskTransitionHandler(
            transitions, context, interactionJankMonitor);
    }

    @WMSingleton
+13 −3
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.jank.Cuj;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
import com.android.wm.shell.transition.Transitions;

@@ -60,6 +62,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH

    private final Context mContext;
    private final Transitions mTransitions;
    private final InteractionJankMonitor mInteractionJankMonitor;
    private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
    private Consumer<SurfaceControl.Transaction> mOnAnimationFinishedCallback;
    private final Supplier<SurfaceControl.Transaction> mTransactionSupplier;
@@ -67,17 +70,21 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH

    public ExitDesktopTaskTransitionHandler(
            Transitions transitions,
            Context context) {
        this(transitions, SurfaceControl.Transaction::new, context);
            Context context,
            InteractionJankMonitor interactionJankMonitor
            ) {
        this(transitions, SurfaceControl.Transaction::new, context, interactionJankMonitor);
    }

    private ExitDesktopTaskTransitionHandler(
            Transitions transitions,
            Supplier<SurfaceControl.Transaction> supplier,
            Context context) {
            Context context,
            InteractionJankMonitor interactionJankMonitor) {
        mTransitions = transitions;
        mTransactionSupplier = supplier;
        mContext = context;
        mInteractionJankMonitor = interactionJankMonitor;
    }

    /**
@@ -146,6 +153,8 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
            final int screenHeight = metrics.heightPixels;
            final SurfaceControl sc = change.getLeash();
            final Rect endBounds = change.getEndAbsBounds();
            mInteractionJankMonitor
                .begin(sc, mContext, Cuj.CUJ_DESKTOP_MODE_EXIT_MODE);
            // Hide the first (fullscreen) frame because the animation will start from the freeform
            // size.
            startT.hide(sc)
@@ -175,6 +184,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
                    if (mOnAnimationFinishedCallback != null) {
                        mOnAnimationFinishedCallback.accept(finishT);
                    }
                    mInteractionJankMonitor.end(Cuj.CUJ_DESKTOP_MODE_EXIT_MODE);
                    mTransitions.getMainExecutor().execute(
                            () -> finishCallback.onTransitionFinished(null));
                }
+4 −1
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.window.WindowContainerTransaction;

import androidx.test.filters.SmallTest;

import com.android.internal.jank.InteractionJankMonitor;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
@@ -65,6 +66,8 @@ public class ExitDesktopTaskTransitionHandlerTest extends ShellTestCase {
    @Mock
    private Transitions mTransitions;
    @Mock
    private InteractionJankMonitor mInteractionJankMonitor;
    @Mock
    IBinder mToken;
    @Mock
    Supplier<SurfaceControl.Transaction> mTransactionFactory;
@@ -94,7 +97,7 @@ public class ExitDesktopTaskTransitionHandlerTest extends ShellTestCase {
                .thenReturn(getContext().getResources().getDisplayMetrics());

        mExitDesktopTaskTransitionHandler = new ExitDesktopTaskTransitionHandler(mTransitions,
                mContext);
                mContext, mInteractionJankMonitor);
        mPoint = new Point(0, 0);
    }