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

Commit d58dd1fa authored by Vineeth Bhende's avatar Vineeth Bhende
Browse files

Add jank instrumentation for exit desktop mode

Bug: 339582781
Test: Checked the perfetto trace
Flag: NONE adding instrumentation

Change-Id: I79047958856de7e0064a20c821f956daf4999b01
parent aace9a8f
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);
    }