Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c92c022 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Adding jank tracing for some CUJs" into ub-launcher3-master

parents b006c243 b8a30ef6
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.quickstep.SysUINavigationMode.removeShelfFromOverview;
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.ValueAnimator;
import android.content.Intent;
@@ -307,4 +309,10 @@ public abstract class BaseQuickstepLauncher extends Launcher
    public void setHintUserWillBeActive() {
        addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE);
    }

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        InteractionJankMonitorWrapper.init(getWindow().getDecorView());
    }
}
+41 −34
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import androidx.annotation.Nullable;

import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.shortcuts.DeepShortcutView;
@@ -81,6 +82,7 @@ import com.android.quickstep.util.StaggeredWorkspaceAnim;
import com.android.quickstep.util.SurfaceTransactionApplier;
import com.android.systemui.shared.system.ActivityCompat;
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.RemoteAnimationAdapterCompat;
import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat;
@@ -791,6 +793,36 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans
                == 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.
     */
@@ -855,21 +887,9 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans
                // is initialized.
                if (launcherIsATargetWithMode(appTargets, MODE_OPENING)
                        || mLauncher.isForceInvisible()) {
                    if (Trace.isEnabled()) {
                        anim.addListener(new AnimatorListenerAdapter() {
                            @Override
                            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);
                            }
                        });
                    }
                    addCujInstrumentation(
                            anim, InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME,
                            TRANSITION_OPEN_LAUNCHER);
                    // Only register the content animation for cancellation when state changes
                    mLauncher.getStateManager().setCurrentAnimation(anim);

@@ -938,25 +958,12 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans
                        launcherClosing);
            }

            if (Trace.isEnabled()) {
                final String section =
            addCujInstrumentation(anim,
                    launchingFromRecents
                                ? TRANSITION_LAUNCH_FROM_RECENTS : TRANSITION_LAUNCH_FROM_ICON;

                anim.addListener(new AnimatorListenerAdapter() {
                    @Override
                    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);
                    }
                });
            }
                            ? InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_RECENTS
                            : InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_ICON,
                    launchingFromRecents
                            ? TRANSITION_LAUNCH_FROM_RECENTS : TRANSITION_LAUNCH_FROM_ICON);

            if (launcherClosing) {
                anim.addListener(mForceInvisibleListener);
+10 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
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.RemoteAnimationTargetCompat;
import com.android.systemui.shared.system.TaskInfoCompat;
@@ -1130,10 +1131,12 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends
        anim.addOnUpdateListener((r, p) -> {
            updateSysUiFlags(Math.max(p, mCurrentShift.value));
        });
        final int cuj = InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME;
        anim.addAnimatorListener(new AnimationSuccessListener() {
            @Override
            public void onAnimationStart(Animator animation) {
                Trace.beginAsyncSection(TRANSITION_OPEN_LAUNCHER, 0);
                InteractionJankMonitorWrapper.begin(cuj);
                if (mActivity != null) {
                    removeLiveTileOverlay();
                }
@@ -1147,6 +1150,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends
                // Make sure recents is in its final state
                maybeUpdateRecentsAttachedState(false);
                mActivityInterface.onSwipeUpToHomeComplete(mDeviceState);
                InteractionJankMonitorWrapper.end(cuj);
            }

            @Override
            public void onAnimationCancel(Animator animation) {
                super.onAnimationCancel(animation);
                InteractionJankMonitorWrapper.cancel(cuj);
            }

            @Override