Merge changes from topic "cuj-sysui-launches" into sc-dev
* changes: Instrument SysUI app launches Add SysUI app launches CUJ to InteractionJankMonitor
This commit is contained in:
committed by
Android (Google) Code Review
commit
b538b60ea6
@@ -43,6 +43,10 @@ import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_IN
|
|||||||
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__NOTIFICATION_SHADE_SWIPE;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SETTINGS_PAGE_SCROLL;
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SETTINGS_PAGE_SCROLL;
|
||||||
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_APP_LAUNCH;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_QS_TILE;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON;
|
||||||
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_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_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_HEADS_UP_DISAPPEAR;
|
||||||
@@ -53,6 +57,7 @@ import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_IN
|
|||||||
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_ROW_EXPAND;
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_ROW_EXPAND;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_ROW_SWIPE;
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_ROW_SWIPE;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_SCROLL_FLING;
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_SCROLL_FLING;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
@@ -153,6 +158,11 @@ public class InteractionJankMonitor {
|
|||||||
public static final int CUJ_LAUNCHER_APP_LAUNCH_FROM_WIDGET = 27;
|
public static final int CUJ_LAUNCHER_APP_LAUNCH_FROM_WIDGET = 27;
|
||||||
public static final int CUJ_SETTINGS_PAGE_SCROLL = 28;
|
public static final int CUJ_SETTINGS_PAGE_SCROLL = 28;
|
||||||
public static final int CUJ_LOCKSCREEN_UNLOCK_ANIMATION = 29;
|
public static final int CUJ_LOCKSCREEN_UNLOCK_ANIMATION = 29;
|
||||||
|
public static final int CUJ_SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON = 30;
|
||||||
|
public static final int CUJ_SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER = 31;
|
||||||
|
public static final int CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE = 32;
|
||||||
|
public static final int CUJ_SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON = 33;
|
||||||
|
public static final int CUJ_STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP = 34;
|
||||||
|
|
||||||
private static final int NO_STATSD_LOGGING = -1;
|
private static final int NO_STATSD_LOGGING = -1;
|
||||||
|
|
||||||
@@ -191,6 +201,11 @@ public class InteractionJankMonitor {
|
|||||||
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_APP_LAUNCH_FROM_WIDGET,
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_APP_LAUNCH_FROM_WIDGET,
|
||||||
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SETTINGS_PAGE_SCROLL,
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SETTINGS_PAGE_SCROLL,
|
||||||
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LOCKSCREEN_UNLOCK_ANIMATION,
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LOCKSCREEN_UNLOCK_ANIMATION,
|
||||||
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON,
|
||||||
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER,
|
||||||
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_QS_TILE,
|
||||||
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON,
|
||||||
|
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP,
|
||||||
};
|
};
|
||||||
|
|
||||||
private static volatile InteractionJankMonitor sInstance;
|
private static volatile InteractionJankMonitor sInstance;
|
||||||
@@ -240,6 +255,11 @@ public class InteractionJankMonitor {
|
|||||||
CUJ_LAUNCHER_APP_LAUNCH_FROM_WIDGET,
|
CUJ_LAUNCHER_APP_LAUNCH_FROM_WIDGET,
|
||||||
CUJ_SETTINGS_PAGE_SCROLL,
|
CUJ_SETTINGS_PAGE_SCROLL,
|
||||||
CUJ_LOCKSCREEN_UNLOCK_ANIMATION,
|
CUJ_LOCKSCREEN_UNLOCK_ANIMATION,
|
||||||
|
CUJ_SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON,
|
||||||
|
CUJ_SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER,
|
||||||
|
CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE,
|
||||||
|
CUJ_SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON,
|
||||||
|
CUJ_STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP,
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface CujType {
|
public @interface CujType {
|
||||||
@@ -578,6 +598,16 @@ public class InteractionJankMonitor {
|
|||||||
return "SETTINGS_PAGE_SCROLL";
|
return "SETTINGS_PAGE_SCROLL";
|
||||||
case CUJ_LOCKSCREEN_UNLOCK_ANIMATION:
|
case CUJ_LOCKSCREEN_UNLOCK_ANIMATION:
|
||||||
return "LOCKSCREEN_UNLOCK_ANIMATION";
|
return "LOCKSCREEN_UNLOCK_ANIMATION";
|
||||||
|
case CUJ_SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON:
|
||||||
|
return "SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON";
|
||||||
|
case CUJ_SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER:
|
||||||
|
return "SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER";
|
||||||
|
case CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE:
|
||||||
|
return "SHADE_APP_LAUNCH_FROM_QS_TILE";
|
||||||
|
case CUJ_SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON:
|
||||||
|
return "SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON";
|
||||||
|
case CUJ_STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP:
|
||||||
|
return "STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP";
|
||||||
}
|
}
|
||||||
return "UNKNOWN";
|
return "UNKNOWN";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -238,7 +238,9 @@ class ActivityLaunchAnimator(
|
|||||||
* during the animation.
|
* during the animation.
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun fromView(view: View): Controller = GhostedViewLaunchAnimatorController(view)
|
fun fromView(view: View, cujType: Int? = null): Controller {
|
||||||
|
return GhostedViewLaunchAnimatorController(view, cujType)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewGroupOverlay
|
import android.view.ViewGroupOverlay
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,7 +30,10 @@ import kotlin.math.min
|
|||||||
*/
|
*/
|
||||||
open class GhostedViewLaunchAnimatorController(
|
open class GhostedViewLaunchAnimatorController(
|
||||||
/** The view that will be ghosted and from which the background will be extracted. */
|
/** The view that will be ghosted and from which the background will be extracted. */
|
||||||
private val ghostedView: View
|
private val ghostedView: View,
|
||||||
|
|
||||||
|
/** The [InteractionJankMonitor.CujType] associated to this animation. */
|
||||||
|
private val cujType: Int? = null
|
||||||
) : ActivityLaunchAnimator.Controller {
|
) : ActivityLaunchAnimator.Controller {
|
||||||
/** The container to which we will add the ghost view and expanding background. */
|
/** The container to which we will add the ghost view and expanding background. */
|
||||||
override var launchContainer = ghostedView.rootView as ViewGroup
|
override var launchContainer = ghostedView.rootView as ViewGroup
|
||||||
@@ -125,6 +129,8 @@ open class GhostedViewLaunchAnimatorController(
|
|||||||
|
|
||||||
val matrix = ghostView?.animationMatrix ?: Matrix.IDENTITY_MATRIX
|
val matrix = ghostView?.animationMatrix ?: Matrix.IDENTITY_MATRIX
|
||||||
matrix.getValues(initialGhostViewMatrixValues)
|
matrix.getValues(initialGhostViewMatrixValues)
|
||||||
|
|
||||||
|
cujType?.let { InteractionJankMonitor.getInstance().begin(ghostedView, it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLaunchAnimationProgress(
|
override fun onLaunchAnimationProgress(
|
||||||
@@ -167,6 +173,8 @@ open class GhostedViewLaunchAnimatorController(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onLaunchAnimationEnd(isExpandingFullyAbove: Boolean) {
|
override fun onLaunchAnimationEnd(isExpandingFullyAbove: Boolean) {
|
||||||
|
cujType?.let { InteractionJankMonitor.getInstance().end(it) }
|
||||||
|
|
||||||
backgroundDrawable?.wrapped?.alpha = startBackgroundAlpha
|
backgroundDrawable?.wrapped?.alpha = startBackgroundAlpha
|
||||||
|
|
||||||
GhostView.removeGhost(ghostedView)
|
GhostView.removeGhost(ghostedView)
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.annotation.UiThread;
|
import androidx.annotation.UiThread;
|
||||||
import androidx.constraintlayout.widget.ConstraintSet;
|
import androidx.constraintlayout.widget.ConstraintSet;
|
||||||
|
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.settingslib.widget.AdaptiveIcon;
|
import com.android.settingslib.widget.AdaptiveIcon;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.animation.ActivityLaunchAnimator;
|
import com.android.systemui.animation.ActivityLaunchAnimator;
|
||||||
@@ -468,7 +469,8 @@ public class MediaControlPanel {
|
|||||||
TransitionLayout player) {
|
TransitionLayout player) {
|
||||||
// TODO(b/174236650): Make sure that the carousel indicator also fades out.
|
// TODO(b/174236650): Make sure that the carousel indicator also fades out.
|
||||||
// TODO(b/174236650): Instrument the animation to measure jank.
|
// TODO(b/174236650): Instrument the animation to measure jank.
|
||||||
return new GhostedViewLaunchAnimatorController(player) {
|
return new GhostedViewLaunchAnimatorController(player,
|
||||||
|
InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_MEDIA_PLAYER) {
|
||||||
@Override
|
@Override
|
||||||
protected float getCurrentTopCornerRadius() {
|
protected float getCurrentTopCornerRadius() {
|
||||||
return ((IlluminationDrawable) player.getBackground()).getCornerRadius();
|
return ((IlluminationDrawable) player.getBackground()).getCornerRadius();
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import android.view.View;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
@@ -272,7 +273,8 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
|
|||||||
private void startSettingsActivity() {
|
private void startSettingsActivity() {
|
||||||
ActivityLaunchAnimator.Controller animationController =
|
ActivityLaunchAnimator.Controller animationController =
|
||||||
mSettingsButtonContainer != null ? ActivityLaunchAnimator.Controller.fromView(
|
mSettingsButtonContainer != null ? ActivityLaunchAnimator.Controller.fromView(
|
||||||
mSettingsButtonContainer) : null;
|
mSettingsButtonContainer,
|
||||||
|
InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON) : null;
|
||||||
mActivityStarter.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS),
|
mActivityStarter.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS),
|
||||||
true /* dismissShade */, animationController);
|
true /* dismissShade */, animationController);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ import androidx.lifecycle.LifecycleOwner;
|
|||||||
import androidx.lifecycle.LifecycleRegistry;
|
import androidx.lifecycle.LifecycleRegistry;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.internal.logging.InstanceId;
|
import com.android.internal.logging.InstanceId;
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
@@ -389,7 +390,8 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
|
|||||||
*/
|
*/
|
||||||
protected void handleLongClick(@Nullable View view) {
|
protected void handleLongClick(@Nullable View view) {
|
||||||
ActivityLaunchAnimator.Controller animationController =
|
ActivityLaunchAnimator.Controller animationController =
|
||||||
view != null ? ActivityLaunchAnimator.Controller.fromView(view) : null;
|
view != null ? ActivityLaunchAnimator.Controller.fromView(view,
|
||||||
|
InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE) : null;
|
||||||
mActivityStarter.postStartActivityDismissingKeyguard(getLongClickIntent(), 0,
|
mActivityStarter.postStartActivityDismissingKeyguard(getLongClickIntent(), 0,
|
||||||
animationController);
|
animationController);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import android.text.TextUtils
|
|||||||
import android.text.format.DateFormat
|
import android.text.format.DateFormat
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor
|
||||||
import com.android.internal.logging.MetricsLogger
|
import com.android.internal.logging.MetricsLogger
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.animation.ActivityLaunchAnimator
|
import com.android.systemui.animation.ActivityLaunchAnimator
|
||||||
@@ -70,7 +71,10 @@ class AlarmTile @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun handleClick(view: View?) {
|
override fun handleClick(view: View?) {
|
||||||
val animationController = view?.let { ActivityLaunchAnimator.Controller.fromView(it) }
|
val animationController = view?.let {
|
||||||
|
ActivityLaunchAnimator.Controller.fromView(
|
||||||
|
it, InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE)
|
||||||
|
}
|
||||||
val pendingIntent = lastAlarmInfo?.showIntent
|
val pendingIntent = lastAlarmInfo?.showIntent
|
||||||
if (pendingIntent != null) {
|
if (pendingIntent != null) {
|
||||||
mActivityStarter.postStartActivityDismissingKeyguard(pendingIntent, animationController)
|
mActivityStarter.postStartActivityDismissingKeyguard(pendingIntent, animationController)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.os.Handler
|
|||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.service.quicksettings.Tile
|
import android.service.quicksettings.Tile
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor
|
||||||
import com.android.internal.logging.MetricsLogger
|
import com.android.internal.logging.MetricsLogger
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.animation.ActivityLaunchAnimator
|
import com.android.systemui.animation.ActivityLaunchAnimator
|
||||||
@@ -106,7 +107,8 @@ class DeviceControlsTile @Inject constructor(
|
|||||||
putExtra(ControlsUiController.EXTRA_ANIMATE, true)
|
putExtra(ControlsUiController.EXTRA_ANIMATE, true)
|
||||||
}
|
}
|
||||||
val animationController = view?.let {
|
val animationController = view?.let {
|
||||||
ActivityLaunchAnimator.Controller.fromView(it)
|
ActivityLaunchAnimator.Controller.fromView(
|
||||||
|
it, InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE)
|
||||||
}
|
}
|
||||||
|
|
||||||
mUiHandler.post {
|
mUiHandler.post {
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.animation.ActivityLaunchAnimator;
|
import com.android.systemui.animation.ActivityLaunchAnimator;
|
||||||
@@ -120,7 +121,8 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> {
|
|||||||
@Override
|
@Override
|
||||||
protected void handleClick(@Nullable View view) {
|
protected void handleClick(@Nullable View view) {
|
||||||
ActivityLaunchAnimator.Controller animationController =
|
ActivityLaunchAnimator.Controller animationController =
|
||||||
view == null ? null : ActivityLaunchAnimator.Controller.fromView(view);
|
view == null ? null : ActivityLaunchAnimator.Controller.fromView(view,
|
||||||
|
InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE);
|
||||||
|
|
||||||
mUiHandler.post(() -> {
|
mUiHandler.post(() -> {
|
||||||
if (mSelectedCard != null) {
|
if (mSelectedCard != null) {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import android.text.TextUtils;
|
|||||||
import android.util.EventLog;
|
import android.util.EventLog;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.statusbar.NotificationVisibility;
|
import com.android.internal.statusbar.NotificationVisibility;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
@@ -508,9 +509,12 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
|||||||
tsb.addNextIntent(intent);
|
tsb.addNextIntent(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ActivityLaunchAnimator.Controller viewController =
|
||||||
|
ActivityLaunchAnimator.Controller.fromView(view,
|
||||||
|
InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_HISTORY_BUTTON
|
||||||
|
);
|
||||||
ActivityLaunchAnimator.Controller animationController =
|
ActivityLaunchAnimator.Controller animationController =
|
||||||
new StatusBarLaunchAnimatorController(
|
new StatusBarLaunchAnimatorController(viewController, mStatusBar,
|
||||||
ActivityLaunchAnimator.Controller.fromView(view), mStatusBar,
|
|
||||||
true /* isActivityIntent */);
|
true /* isActivityIntent */);
|
||||||
|
|
||||||
mActivityLaunchAnimator.startIntentWithAnimation(animationController, animate,
|
mActivityLaunchAnimator.startIntentWithAnimation(animationController, animate,
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import android.content.Intent
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Chronometer
|
import android.widget.Chronometer
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.animation.ActivityLaunchAnimator
|
import com.android.systemui.animation.ActivityLaunchAnimator
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
@@ -179,7 +180,10 @@ class OngoingCallController @Inject constructor(
|
|||||||
logger.logChipClicked()
|
logger.logChipClicked()
|
||||||
activityStarter.postStartActivityDismissingKeyguard(
|
activityStarter.postStartActivityDismissingKeyguard(
|
||||||
currentCallNotificationInfo.intent, 0,
|
currentCallNotificationInfo.intent, 0,
|
||||||
ActivityLaunchAnimator.Controller.fromView(backgroundView))
|
ActivityLaunchAnimator.Controller.fromView(
|
||||||
|
backgroundView,
|
||||||
|
InteractionJankMonitor.CUJ_STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
setUpUidObserver(currentCallNotificationInfo)
|
setUpUidObserver(currentCallNotificationInfo)
|
||||||
|
|||||||
Reference in New Issue
Block a user