Refine the latency and jank instrumentation of opening panel

We had two problems, the first one is that the latency instruemntation
overlapped with the jank instrumentation; the second one is that
the swipe / fling instrumentation might be ended too early and the
fling part was ignored.

Bug: 169221093
Bug: 176953201
Test: See the doc list in comment
Change-Id: I11937d02a3a05c82dd2526ae59ccd472f39309c7
This commit is contained in:
Ahan Wu
2021-04-28 22:45:51 +08:00
parent 5b6127dffb
commit 30fc7e95b2
3 changed files with 17 additions and 8 deletions

View File

@@ -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) {

View File

@@ -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;
@@ -1691,7 +1690,6 @@ public class NotificationPanelViewController extends PanelViewController {
return;
}
mExpectingSynthesizedDown = true;
InteractionJankMonitor.getInstance().begin(mView, CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE);
onTrackingStarted();
updatePanelExpanded();
}

View File

@@ -633,6 +633,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;
@@ -1396,11 +1402,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;
}