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
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index cdf770f..b533ac4 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 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 @@
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 @@
@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 @@
(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() {