Merge "Instrument CUJ for HUN and App launch from notification"

This commit is contained in:
TreeHugger Robot
2020-11-04 06:00:04 +00:00
committed by Android (Google) Code Review
4 changed files with 62 additions and 0 deletions

View File

@@ -5304,6 +5304,11 @@ message UIInteractionFrameInfoReported {
LAUNCHER_APP_CLOSE_TO_HOME = 10;
LAUNCHER_APP_CLOSE_TO_PIP = 11;
LAUNCHER_QUICK_SWITCH = 12;
SHADE_HEADS_UP_APPEAR = 13;
SHADE_HEADS_UP_DISAPPEAR = 14;
SHADE_NOTIFICATION_ADD = 15;
SHADE_NOTIFICATION_REMOVE = 16;
SHADE_APP_LAUNCH = 17;
}
optional InteractionType interaction_type = 1;

View File

@@ -22,7 +22,12 @@ import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_IN
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_APP_LAUNCH_FROM_RECENTS;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_QUICK_SWITCH;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__NOTIFICATION_SHADE_SWIPE;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_EXPAND_COLLAPSE_LOCK;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_HEADS_UP_APPEAR;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_HEADS_UP_DISAPPEAR;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_NOTIFICATION_ADD;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_NOTIFICATION_REMOVE;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_QS_EXPAND_COLLAPSE;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_QS_SCROLL_SWIPE;
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_ROW_EXPAND;
@@ -67,6 +72,11 @@ public class InteractionJankMonitor {
public static final int CUJ_LAUNCHER_APP_CLOSE_TO_HOME = 9;
public static final int CUJ_LAUNCHER_APP_CLOSE_TO_PIP = 10;
public static final int CUJ_LAUNCHER_QUICK_SWITCH = 11;
public static final int CUJ_NOTIFICATION_HEADS_UP_APPEAR = 12;
public static final int CUJ_NOTIFICATION_HEADS_UP_DISAPPEAR = 13;
public static final int CUJ_NOTIFICATION_ADD = 14;
public static final int CUJ_NOTIFICATION_REMOVE = 15;
public static final int CUJ_NOTIFICATION_APP_START = 16;
private static final int NO_STATSD_LOGGING = -1;
@@ -87,6 +97,11 @@ public class InteractionJankMonitor {
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_APP_CLOSE_TO_HOME,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_APP_CLOSE_TO_PIP,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_QUICK_SWITCH,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_HEADS_UP_APPEAR,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_HEADS_UP_DISAPPEAR,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_NOTIFICATION_ADD,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_NOTIFICATION_REMOVE,
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH,
};
private static volatile InteractionJankMonitor sInstance;
@@ -112,6 +127,11 @@ public class InteractionJankMonitor {
CUJ_LAUNCHER_APP_CLOSE_TO_HOME,
CUJ_LAUNCHER_APP_CLOSE_TO_PIP,
CUJ_LAUNCHER_QUICK_SWITCH,
CUJ_NOTIFICATION_HEADS_UP_APPEAR,
CUJ_NOTIFICATION_HEADS_UP_DISAPPEAR,
CUJ_NOTIFICATION_ADD,
CUJ_NOTIFICATION_REMOVE,
CUJ_NOTIFICATION_APP_START,
})
@Retention(RetentionPolicy.SOURCE)
public @interface CujType {}

View File

@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.notification;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_APP_START;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
@@ -32,6 +34,7 @@ import android.view.SyncRtSurfaceTransactionApplier;
import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams;
import android.view.View;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.systemui.Interpolators;
import com.android.systemui.statusbar.NotificationShadeDepthController;
@@ -226,10 +229,27 @@ public class ActivityLaunchAnimator {
}
});
anim.addListener(new AnimatorListenerAdapter() {
private boolean mWasCancelled;
@Override
public void onAnimationStart(Animator animation) {
InteractionJankMonitor.getInstance().begin(CUJ_NOTIFICATION_APP_START);
}
@Override
public void onAnimationCancel(Animator animation) {
mWasCancelled = true;
}
@Override
public void onAnimationEnd(Animator animation) {
setExpandAnimationRunning(false);
invokeCallback(iRemoteAnimationFinishedCallback);
if (!mWasCancelled) {
InteractionJankMonitor.getInstance().end(CUJ_NOTIFICATION_APP_START);
} else {
InteractionJankMonitor.getInstance().cancel(CUJ_NOTIFICATION_APP_START);
}
}
});
anim.start();

View File

@@ -33,6 +33,7 @@ import android.view.accessibility.AccessibilityManager;
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
@@ -750,12 +751,16 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
if (!mWasCancelled) {
enableAppearDrawing(false);
onAppearAnimationFinished(isAppearing);
InteractionJankMonitor.getInstance().end(getCujType(isAppearing));
} else {
InteractionJankMonitor.getInstance().cancel(getCujType(isAppearing));
}
}
@Override
public void onAnimationStart(Animator animation) {
mWasCancelled = false;
InteractionJankMonitor.getInstance().begin(getCujType(isAppearing));
}
@Override
@@ -766,6 +771,18 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
mAppearAnimator.start();
}
private int getCujType(boolean isAppearing) {
if (mIsHeadsUpAnimation) {
return isAppearing
? InteractionJankMonitor.CUJ_NOTIFICATION_HEADS_UP_APPEAR
: InteractionJankMonitor.CUJ_NOTIFICATION_HEADS_UP_DISAPPEAR;
} else {
return isAppearing
? InteractionJankMonitor.CUJ_NOTIFICATION_ADD
: InteractionJankMonitor.CUJ_NOTIFICATION_REMOVE;
}
}
protected void onAppearAnimationFinished(boolean wasAppearing) {
}