Loading quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,8 @@ import static com.android.launcher3.LauncherState.NORMAL; import static com.android.quickstep.SysUINavigationMode.removeShelfFromOverview; import static com.android.quickstep.SysUINavigationMode.removeShelfFromOverview; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import android.animation.AnimatorSet; import android.animation.AnimatorSet; import android.animation.ValueAnimator; import android.animation.ValueAnimator; import android.content.Intent; import android.content.Intent; Loading Loading @@ -307,4 +309,10 @@ public abstract class BaseQuickstepLauncher extends Launcher public void setHintUserWillBeActive() { public void setHintUserWillBeActive() { addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE); addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE); } } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); InteractionJankMonitorWrapper.init(getWindow().getDecorView()); } } } quickstep/src/com/android/launcher3/QuickstepAppTransitionManagerImpl.java +41 −34 Original line number Original line Diff line number Diff line Loading @@ -66,6 +66,7 @@ import androidx.annotation.Nullable; import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.anim.AnimationSuccessListener; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.shortcuts.DeepShortcutView; import com.android.launcher3.shortcuts.DeepShortcutView; Loading @@ -81,6 +82,7 @@ import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.systemui.shared.system.ActivityCompat; import com.android.systemui.shared.system.ActivityCompat; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.RemoteAnimationAdapterCompat; import com.android.systemui.shared.system.RemoteAnimationAdapterCompat; import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; Loading Loading @@ -791,6 +793,36 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans == PackageManager.PERMISSION_GRANTED; == PackageManager.PERMISSION_GRANTED; } } private void addCujInstrumentation(Animator anim, int cuj, String transition) { if (Trace.isEnabled()) { anim.addListener(new AnimationSuccessListener() { @Override public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(transition, 0); InteractionJankMonitorWrapper.begin(cuj); super.onAnimationStart(animation); } @Override public void onAnimationCancel(Animator animation) { super.onAnimationCancel(animation); InteractionJankMonitorWrapper.cancel(cuj); } @Override public void onAnimationSuccess(Animator animator) { InteractionJankMonitorWrapper.end(cuj); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); Trace.endAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); } }); } } /** /** * Remote animation runner for animation from the app to Launcher, including recents. * Remote animation runner for animation from the app to Launcher, including recents. */ */ Loading Loading @@ -855,21 +887,9 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans // is initialized. // is initialized. if (launcherIsATargetWithMode(appTargets, MODE_OPENING) if (launcherIsATargetWithMode(appTargets, MODE_OPENING) || mLauncher.isForceInvisible()) { || mLauncher.isForceInvisible()) { if (Trace.isEnabled()) { addCujInstrumentation( anim.addListener(new AnimatorListenerAdapter() { anim, InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME, @Override TRANSITION_OPEN_LAUNCHER); public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); super.onAnimationStart(animation); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); Trace.endAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); } }); } // Only register the content animation for cancellation when state changes // Only register the content animation for cancellation when state changes mLauncher.getStateManager().setCurrentAnimation(anim); mLauncher.getStateManager().setCurrentAnimation(anim); Loading Loading @@ -938,25 +958,12 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans launcherClosing); launcherClosing); } } if (Trace.isEnabled()) { addCujInstrumentation(anim, final String section = launchingFromRecents launchingFromRecents ? TRANSITION_LAUNCH_FROM_RECENTS : TRANSITION_LAUNCH_FROM_ICON; ? InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_RECENTS : InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_ICON, anim.addListener(new AnimatorListenerAdapter() { launchingFromRecents @Override ? TRANSITION_LAUNCH_FROM_RECENTS : TRANSITION_LAUNCH_FROM_ICON); public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(section, 0); super.onAnimationStart(animation); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); Trace.endAsyncSection(section, 0); } }); } if (launcherClosing) { if (launcherClosing) { anim.addListener(mForceInvisibleListener); anim.addListener(mForceInvisibleListener); Loading quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -97,6 +97,7 @@ import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.LatencyTrackerCompat; import com.android.systemui.shared.system.LatencyTrackerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.TaskInfoCompat; import com.android.systemui.shared.system.TaskInfoCompat; Loading Loading @@ -1130,10 +1131,12 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends anim.addOnUpdateListener((r, p) -> { anim.addOnUpdateListener((r, p) -> { updateSysUiFlags(Math.max(p, mCurrentShift.value)); updateSysUiFlags(Math.max(p, mCurrentShift.value)); }); }); final int cuj = InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME; anim.addAnimatorListener(new AnimationSuccessListener() { anim.addAnimatorListener(new AnimationSuccessListener() { @Override @Override public void onAnimationStart(Animator animation) { public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); InteractionJankMonitorWrapper.begin(cuj); if (mActivity != null) { if (mActivity != null) { removeLiveTileOverlay(); removeLiveTileOverlay(); } } Loading @@ -1147,6 +1150,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends // Make sure recents is in its final state // Make sure recents is in its final state maybeUpdateRecentsAttachedState(false); maybeUpdateRecentsAttachedState(false); mActivityInterface.onSwipeUpToHomeComplete(mDeviceState); mActivityInterface.onSwipeUpToHomeComplete(mDeviceState); InteractionJankMonitorWrapper.end(cuj); } @Override public void onAnimationCancel(Animator animation) { super.onAnimationCancel(animation); InteractionJankMonitorWrapper.cancel(cuj); } } @Override @Override Loading Loading
quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,8 @@ import static com.android.launcher3.LauncherState.NORMAL; import static com.android.quickstep.SysUINavigationMode.removeShelfFromOverview; import static com.android.quickstep.SysUINavigationMode.removeShelfFromOverview; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import android.animation.AnimatorSet; import android.animation.AnimatorSet; import android.animation.ValueAnimator; import android.animation.ValueAnimator; import android.content.Intent; import android.content.Intent; Loading Loading @@ -307,4 +309,10 @@ public abstract class BaseQuickstepLauncher extends Launcher public void setHintUserWillBeActive() { public void setHintUserWillBeActive() { addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE); addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE); } } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); InteractionJankMonitorWrapper.init(getWindow().getDecorView()); } } }
quickstep/src/com/android/launcher3/QuickstepAppTransitionManagerImpl.java +41 −34 Original line number Original line Diff line number Diff line Loading @@ -66,6 +66,7 @@ import androidx.annotation.Nullable; import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.anim.AnimationSuccessListener; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.shortcuts.DeepShortcutView; import com.android.launcher3.shortcuts.DeepShortcutView; Loading @@ -81,6 +82,7 @@ import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.systemui.shared.system.ActivityCompat; import com.android.systemui.shared.system.ActivityCompat; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.RemoteAnimationAdapterCompat; import com.android.systemui.shared.system.RemoteAnimationAdapterCompat; import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; Loading Loading @@ -791,6 +793,36 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans == PackageManager.PERMISSION_GRANTED; == PackageManager.PERMISSION_GRANTED; } } private void addCujInstrumentation(Animator anim, int cuj, String transition) { if (Trace.isEnabled()) { anim.addListener(new AnimationSuccessListener() { @Override public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(transition, 0); InteractionJankMonitorWrapper.begin(cuj); super.onAnimationStart(animation); } @Override public void onAnimationCancel(Animator animation) { super.onAnimationCancel(animation); InteractionJankMonitorWrapper.cancel(cuj); } @Override public void onAnimationSuccess(Animator animator) { InteractionJankMonitorWrapper.end(cuj); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); Trace.endAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); } }); } } /** /** * Remote animation runner for animation from the app to Launcher, including recents. * Remote animation runner for animation from the app to Launcher, including recents. */ */ Loading Loading @@ -855,21 +887,9 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans // is initialized. // is initialized. if (launcherIsATargetWithMode(appTargets, MODE_OPENING) if (launcherIsATargetWithMode(appTargets, MODE_OPENING) || mLauncher.isForceInvisible()) { || mLauncher.isForceInvisible()) { if (Trace.isEnabled()) { addCujInstrumentation( anim.addListener(new AnimatorListenerAdapter() { anim, InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME, @Override TRANSITION_OPEN_LAUNCHER); public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); super.onAnimationStart(animation); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); Trace.endAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); } }); } // Only register the content animation for cancellation when state changes // Only register the content animation for cancellation when state changes mLauncher.getStateManager().setCurrentAnimation(anim); mLauncher.getStateManager().setCurrentAnimation(anim); Loading Loading @@ -938,25 +958,12 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans launcherClosing); launcherClosing); } } if (Trace.isEnabled()) { addCujInstrumentation(anim, final String section = launchingFromRecents launchingFromRecents ? TRANSITION_LAUNCH_FROM_RECENTS : TRANSITION_LAUNCH_FROM_ICON; ? InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_RECENTS : InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_ICON, anim.addListener(new AnimatorListenerAdapter() { launchingFromRecents @Override ? TRANSITION_LAUNCH_FROM_RECENTS : TRANSITION_LAUNCH_FROM_ICON); public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(section, 0); super.onAnimationStart(animation); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); Trace.endAsyncSection(section, 0); } }); } if (launcherClosing) { if (launcherClosing) { anim.addListener(mForceInvisibleListener); anim.addListener(mForceInvisibleListener); Loading
quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -97,6 +97,7 @@ import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.LatencyTrackerCompat; import com.android.systemui.shared.system.LatencyTrackerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.TaskInfoCompat; import com.android.systemui.shared.system.TaskInfoCompat; Loading Loading @@ -1130,10 +1131,12 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends anim.addOnUpdateListener((r, p) -> { anim.addOnUpdateListener((r, p) -> { updateSysUiFlags(Math.max(p, mCurrentShift.value)); updateSysUiFlags(Math.max(p, mCurrentShift.value)); }); }); final int cuj = InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME; anim.addAnimatorListener(new AnimationSuccessListener() { anim.addAnimatorListener(new AnimationSuccessListener() { @Override @Override public void onAnimationStart(Animator animation) { public void onAnimationStart(Animator animation) { Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0); InteractionJankMonitorWrapper.begin(cuj); if (mActivity != null) { if (mActivity != null) { removeLiveTileOverlay(); removeLiveTileOverlay(); } } Loading @@ -1147,6 +1150,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends // Make sure recents is in its final state // Make sure recents is in its final state maybeUpdateRecentsAttachedState(false); maybeUpdateRecentsAttachedState(false); mActivityInterface.onSwipeUpToHomeComplete(mDeviceState); mActivityInterface.onSwipeUpToHomeComplete(mDeviceState); InteractionJankMonitorWrapper.end(cuj); } @Override public void onAnimationCancel(Animator animation) { super.onAnimationCancel(animation); InteractionJankMonitorWrapper.cancel(cuj); } } @Override @Override Loading