From a6dcbf8fc00a4ae94c10d98a261af1ee56aef294 Mon Sep 17 00:00:00 2001 From: Milton Wu Date: Mon, 15 Nov 2021 14:29:37 +0800 Subject: [PATCH] Impl CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE Implement CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE during QS screen scrolling, and swiping. Bug: 199715431 Test: atest QSPanelControllerBaseTest QSPanelControllerTest QSSquishinessControllerTest Change-Id: I61957c986aa1fc3a79e00c0885e75e27664daf3d --- .../android/systemui/qs/PagedTileLayout.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index cdf770f80387e..b533ac4ba6a9e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -1,5 +1,7 @@ package com.android.systemui.qs; +import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -20,6 +22,7 @@ import android.widget.Scroller; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; +import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSTile; @@ -533,6 +536,11 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { private final ViewPager.OnPageChangeListener mOnPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { + + private int mCurrentScrollState = SCROLL_STATE_IDLE; + // Flag to avoid redundant call InteractionJankMonitor::begin() + private boolean mIsScrollJankTraceBegin = false; + @Override public void onPageSelected(int position) { updateSelected(); @@ -546,6 +554,13 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + if (!mIsScrollJankTraceBegin && mCurrentScrollState == SCROLL_STATE_DRAGGING) { + InteractionJankMonitor.getInstance().begin(PagedTileLayout.this, + CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE); + mIsScrollJankTraceBegin = true; + } + if (mPageIndicator == null) return; mPageIndicatorPosition = position + positionOffset; mPageIndicator.setLocation(mPageIndicatorPosition); @@ -554,6 +569,16 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { (isLayoutRtl() ? position == mPages.size() - 1 : position == 0)); } } + + @Override + public void onPageScrollStateChanged(int state) { + if (state != mCurrentScrollState && state == SCROLL_STATE_IDLE) { + InteractionJankMonitor.getInstance().end( + CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE); + mIsScrollJankTraceBegin = false; + } + mCurrentScrollState = state; + } }; private final PagerAdapter mAdapter = new PagerAdapter() {