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

Commit 6e7c098a authored by Eric Sum's avatar Eric Sum Committed by Android (Google) Code Review
Browse files

Merge "Add ACTION_DESKTOP_MODE_EXIT_MODE latency." into main

parents 8274aa12 b6c1af8b
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPOR
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_CHECK_CREDENTIAL_UNLOCKED;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_EXIT_MODE;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_EXPAND_PANEL;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FACE_WAKE_AND_UNLOCK;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FINGERPRINT_WAKE_AND_UNLOCK;
@@ -290,6 +291,16 @@ public class LatencyTracker {
     */
    public static final int ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU = 31;

    /**
     * Time it takes for the "exit desktop" mode animation to begin after the user provides input.
     * <p>
     * Starts when the user provides input to exit desktop mode and enter full screen mode for an
     * app. This including selecting the full screen button in an app handle's menu, dragging an
     * app's window handle to the top of the screen, and using the appropriate keyboard shortcut.
     * Ends when the animation to exit desktop mode begins.
     */
    public static final int ACTION_DESKTOP_MODE_EXIT_MODE = 32;

    private static final int[] ACTIONS_ALL = {
        ACTION_EXPAND_PANEL,
        ACTION_TOGGLE_RECENTS,
@@ -323,6 +334,7 @@ public class LatencyTracker {
        ACTION_SHADE_WINDOW_DISPLAY_CHANGE,
        ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG,
        ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU,
        ACTION_DESKTOP_MODE_EXIT_MODE,
    };

    /** @hide */
@@ -359,6 +371,7 @@ public class LatencyTracker {
        ACTION_SHADE_WINDOW_DISPLAY_CHANGE,
        ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG,
        ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU,
        ACTION_DESKTOP_MODE_EXIT_MODE,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface Action {}
@@ -397,6 +410,7 @@ public class LatencyTracker {
            UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHADE_WINDOW_DISPLAY_CHANGE,
            UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG,
            UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU,
            UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_EXIT_MODE,
    };

    private final Object mLock = new Object();
@@ -601,6 +615,8 @@ public class LatencyTracker {
                return "ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG";
            case UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU:
                return "ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_MENU";
            case UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_EXIT_MODE:
                return "ACTION_DESKTOP_MODE_EXIT_MODE";
            default:
                throw new IllegalArgumentException("Invalid action");
        }
+9 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ 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.internal.util.LatencyTracker;
import com.android.wm.shell.shared.annotations.ShellMainThread;
import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource;
import com.android.wm.shell.transition.Transitions;
@@ -68,6 +69,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
    private final Context mContext;
    private final Transitions mTransitions;
    private final InteractionJankMonitor mInteractionJankMonitor;
    private final LatencyTracker mLatencyTracker;
    @ShellMainThread
    private final Handler mHandler;
    private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
@@ -95,6 +97,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
        mTransactionSupplier = supplier;
        mContext = context;
        mInteractionJankMonitor = interactionJankMonitor;
        mLatencyTracker = LatencyTracker.getInstance(mContext);
        mHandler = handler;
    }

@@ -109,6 +112,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
    public IBinder startTransition(@NonNull DesktopModeTransitionSource transitionSource,
            @NonNull WindowContainerTransaction wct, Point position,
            Function0<Unit> onAnimationEndCallback) {
        mLatencyTracker.onActionStart(LatencyTracker.ACTION_DESKTOP_MODE_EXIT_MODE);
        mPosition = position;
        mOnAnimationFinishedCallback = onAnimationEndCallback;
        final IBinder token = mTransitions.startTransition(getExitTransitionType(transitionSource),
@@ -141,6 +145,11 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH

        mPendingTransitionTokens.remove(transition);


        if (transitionHandled) {
            mLatencyTracker.onActionEnd(LatencyTracker.ACTION_DESKTOP_MODE_EXIT_MODE);
        }

        return transitionHandled;
    }