Loading core/java/com/android/internal/util/LatencyTracker.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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 */ Loading Loading @@ -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 {} Loading Loading @@ -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(); Loading Loading @@ -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"); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandler.java +9 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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<>(); Loading Loading @@ -95,6 +97,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH mTransactionSupplier = supplier; mContext = context; mInteractionJankMonitor = interactionJankMonitor; mLatencyTracker = LatencyTracker.getInstance(mContext); mHandler = handler; } Loading @@ -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), Loading Loading @@ -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; } Loading Loading
core/java/com/android/internal/util/LatencyTracker.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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 */ Loading Loading @@ -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 {} Loading Loading @@ -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(); Loading Loading @@ -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"); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandler.java +9 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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<>(); Loading Loading @@ -95,6 +97,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH mTransactionSupplier = supplier; mContext = context; mInteractionJankMonitor = interactionJankMonitor; mLatencyTracker = LatencyTracker.getInstance(mContext); mHandler = handler; } Loading @@ -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), Loading Loading @@ -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; } Loading