diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index f078ccd9d382c..1ec785d4712e0 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -213,7 +213,9 @@ public class OverviewProxyService extends CurrentUserTracker implements // TODO move this logic to message queue mStatusBarOptionalLazy.ifPresent(statusBarLazy -> { StatusBar statusBar = statusBarLazy.get(); - statusBar.getPanelController().startExpandLatencyTracking(); + if (event.getActionMasked() == ACTION_DOWN) { + statusBar.getPanelController().startExpandLatencyTracking(); + } mHandler.post(()-> { int action = event.getActionMasked(); if (action == ACTION_DOWN) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index da6f1de67e461..9c08b8999af02 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -22,7 +22,6 @@ import static androidx.constraintlayout.widget.ConstraintSet.END; import static androidx.constraintlayout.widget.ConstraintSet.PARENT_ID; import static androidx.constraintlayout.widget.ConstraintSet.START; -import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE; import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE; import static com.android.systemui.classifier.Classifier.QS_COLLAPSE; import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; @@ -1730,7 +1729,6 @@ public class NotificationPanelViewController extends PanelViewController { return; } mExpectingSynthesizedDown = true; - InteractionJankMonitor.getInstance().begin(mView, CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); onTrackingStarted(); updatePanelExpanded(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java index d0bdf40d1f0b2..264930972181d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java @@ -637,6 +637,12 @@ public abstract class PanelViewController { animator.addListener(new AnimatorListenerAdapter() { private boolean mCancelled; + @Override + public void onAnimationStart(Animator animation) { + InteractionJankMonitor.getInstance() + .begin(mView, CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + } + @Override public void onAnimationCancel(Animator animation) { mCancelled = true; @@ -1412,11 +1418,14 @@ public abstract class PanelViewController { case MotionEvent.ACTION_CANCEL: addMovement(event); endMotionEvent(event, x, y, false /* forceCancel */); - InteractionJankMonitor monitor = InteractionJankMonitor.getInstance(); - if (event.getActionMasked() == MotionEvent.ACTION_UP) { - monitor.end(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); - } else { - monitor.cancel(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + // mHeightAnimator is null, there is no remaining frame, ends instrumenting. + if (mHeightAnimator == null) { + InteractionJankMonitor monitor = InteractionJankMonitor.getInstance(); + if (event.getActionMasked() == MotionEvent.ACTION_UP) { + monitor.end(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + } else { + monitor.cancel(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + } } break; }