From 2b6d18230bdc5d75148740c7c0faac13dfba30d4 Mon Sep 17 00:00:00 2001 From: vadimt Date: Tue, 9 Feb 2021 17:59:48 -0800 Subject: [PATCH] Instrumenting swiping up to all apps for jank Bug: 178656784 Test: manual Change-Id: I2332f0f358dc7312dc7ad0b88bc51db5bfa8be6c --- .../PortraitStatesTouchController.java | 41 +++++++++++++++++++ .../AbstractStateChangeTouchController.java | 11 ++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java index 73f4ff2ba4..c60e257105 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java @@ -49,6 +49,7 @@ import com.android.launcher3.uioverrides.states.OverviewState; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.util.LayoutUtils; import com.android.quickstep.views.RecentsView; +import com.android.systemui.shared.system.InteractionJankMonitorWrapper; /** * Touch controller for handling various state transitions in portrait UI. @@ -319,4 +320,44 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr return baseInterpolator.getInterpolation(v); } } + + @Override + public boolean onControllerInterceptTouchEvent(MotionEvent ev) { + switch (ev.getAction()) { + case MotionEvent.ACTION_DOWN: + InteractionJankMonitorWrapper.begin( + mLauncher.getRootView(), InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS); + break; + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + InteractionJankMonitorWrapper.cancel( + InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS); + break; + } + return super.onControllerInterceptTouchEvent(ev); + + } + + @Override + protected void onReinitToState(LauncherState newToState) { + super.onReinitToState(newToState); + if (newToState != ALL_APPS) { + InteractionJankMonitorWrapper.cancel(InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS); + } + } + + @Override + protected void onReachedFinalState(LauncherState toState) { + super.onReinitToState(toState); + if (toState == ALL_APPS) { + InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS); + } + } + + @Override + protected void clearState() { + super.clearState(); + InteractionJankMonitorWrapper.cancel(InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS); + } } diff --git a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java index 10cd04cfcf..e0a82e761f 100644 --- a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java +++ b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java @@ -124,7 +124,7 @@ public abstract class AbstractStateChangeTouchController protected abstract boolean canInterceptTouch(MotionEvent ev); @Override - public final boolean onControllerInterceptTouchEvent(MotionEvent ev) { + public boolean onControllerInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { mNoIntercept = !canInterceptTouch(ev); if (mNoIntercept) { @@ -193,6 +193,8 @@ public abstract class AbstractStateChangeTouchController : reachedToState ? mToState : mFromState; LauncherState newToState = getTargetState(newFromState, isDragTowardPositive); + onReinitToState(newToState); + if (newFromState == mFromState && newToState == mToState || (newFromState == newToState)) { return false; } @@ -231,6 +233,12 @@ public abstract class AbstractStateChangeTouchController return true; } + protected void onReinitToState(LauncherState newToState) { + } + + protected void onReachedFinalState(LauncherState newToState) { + } + protected boolean goingBetweenNormalAndOverview(LauncherState fromState, LauncherState toState) { return (fromState == NORMAL || fromState == OVERVIEW) @@ -527,6 +535,7 @@ public abstract class AbstractStateChangeTouchController mAtomicComponentsController.getAnimationPlayer().end(); mAtomicComponentsController = null; } + onReachedFinalState(mToState); clearState(); boolean shouldGoToTargetState = mGoingBetweenStates || (mToState != targetState); if (shouldGoToTargetState) {