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

Commit 18516fda authored by Felix Stern's avatar Felix Stern Committed by Android (Google) Code Review
Browse files

Merge "Sending statsToken with animatingTypes" into main

parents 1558bfa6 ff029d29
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -809,7 +809,8 @@ interface IWindowManager
     * Updates the currently animating insets types of a remote process.
     */
    @EnforcePermission("MANAGE_APP_TOKENS")
    void updateDisplayWindowAnimatingTypes(int displayId, int animatingTypes);
    void updateDisplayWindowAnimatingTypes(int displayId, int animatingTypes,
            in @nullable ImeTracker.Token statsToken);

    /**
     * Called to get the expected window insets.
+3 −1
Original line number Diff line number Diff line
@@ -277,8 +277,10 @@ interface IWindowSession {
     *
     * @param window The window that is insets animaiton is running.
     * @param animatingTypes Indicates the currently animating insets types.
     * @param imeStatsToken the token tracking the current IME request or {@code null} otherwise.
     */
    oneway void updateAnimatingTypes(IWindow window, int animatingTypes);
    oneway void updateAnimatingTypes(IWindow window, int animatingTypes,
            in @nullable ImeTracker.Token imeStatsToken);

    /**
     * Called when the system gesture exclusion has changed.
+24 −6
Original line number Diff line number Diff line
@@ -215,8 +215,11 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
         * contain all types, which have an ongoing animation.
         *
         * @param animatingTypes the {@link InsetsType}s that are currently animating
         * @param statsToken the token tracking the current IME request or {@code null} otherwise.
         */
        default void updateAnimatingTypes(@InsetsType int animatingTypes) {}
        default void updateAnimatingTypes(@InsetsType int animatingTypes,
                @Nullable ImeTracker.Token statsToken) {
        }

        /** @see ViewRootImpl#isHandlingPointerEvent */
        default boolean isHandlingPointerEvent() {
@@ -748,7 +751,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
                            mFrame, mFromState, mToState, RESIZE_INTERPOLATOR,
                            ANIMATION_DURATION_RESIZE, mTypes, InsetsController.this);
                    if (mRunningAnimations.isEmpty()) {
                        mHost.updateAnimatingTypes(runner.getTypes());
                        mHost.updateAnimatingTypes(runner.getTypes(),
                                runner.getAnimationType() == ANIMATION_TYPE_HIDE
                                        ? runner.getStatsToken() : null);
                    }
                    mRunningAnimations.add(new RunningAnimation(runner, runner.getAnimationType()));
                    mAnimatingTypes |= runner.getTypes();
@@ -1421,6 +1426,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
            if (DEBUG) Log.d(TAG, "no types to animate in controlAnimationUnchecked");
            Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
            Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
            ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_CLIENT_CONTROL_ANIMATION);
            return;
        }
        if (DEBUG) Log.d(TAG, "controlAnimation types: " + types);
@@ -1569,7 +1575,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
        }
        ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_ANIMATION_RUNNING);
        mAnimatingTypes |= runner.getTypes();
        mHost.updateAnimatingTypes(mAnimatingTypes);
        mHost.updateAnimatingTypes(mAnimatingTypes, null /* statsToken */);
        mRunningAnimations.add(new RunningAnimation(runner, animationType));
        if (DEBUG) Log.d(TAG, "Animation added to runner. useInsetsAnimationThread: "
                + useInsetsAnimationThread);
@@ -1778,7 +1784,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
                ImeTracker.forLogging().onHidden(statsToken);
            }
        }
        reportRequestedVisibleTypes(shown ? null : runner.getStatsToken());
        reportRequestedVisibleTypes(null /* statsToken */);
    }

    @Override
@@ -1835,7 +1841,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
                            if (mHost != null) {
                                // if the (hide) animation is cancelled, the
                                // requestedVisibleTypes should be reported at this point.
                                reportRequestedVisibleTypes(control.getStatsToken());
                                reportRequestedVisibleTypes(!Flags.reportAnimatingInsetsTypes()
                                        ? control.getStatsToken() : null);
                                mHost.getInputMethodManager().removeImeSurface(
                                        mHost.getWindowToken());
                            }
@@ -1847,7 +1854,13 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
        }
        if (removedTypes > 0) {
            mAnimatingTypes &= ~removedTypes;
            mHost.updateAnimatingTypes(mAnimatingTypes);
            if (mHost != null) {
                final boolean dispatchStatsToken =
                        Flags.reportAnimatingInsetsTypes() && (removedTypes & ime()) != 0
                                && control.getAnimationType() == ANIMATION_TYPE_HIDE;
                mHost.updateAnimatingTypes(mAnimatingTypes,
                        dispatchStatsToken ? control.getStatsToken() : null);
            }
        }

        onAnimationStateChanged(removedTypes, false /* running */);
@@ -2003,6 +2016,11 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
            if (Flags.refactorInsetsController()) {
                ImeTracker.forLogging().onProgress(statsToken,
                        ImeTracker.PHASE_CLIENT_REPORT_REQUESTED_VISIBLE_TYPES);
                if (Flags.reportAnimatingInsetsTypes() && (typesToReport & ime()) == 0) {
                    // The IME hide animating flow should not be followed from here, but after
                    // the hide animation has finished and Host.updateAnimatingTypes is called.
                    statsToken = null;
                }
            }
            mReportedRequestedVisibleTypes = mRequestedVisibleTypes;
            mHost.updateRequestedVisibleTypes(mReportedRequestedVisibleTypes, statsToken);
+5 −3
Original line number Diff line number Diff line
@@ -2555,9 +2555,11 @@ public final class ViewRootImpl implements ViewParent,
    /**
     * Notify the when the animating insets types have changed.
     *
     * @hide
     */
    @VisibleForTesting
    public void updateAnimatingTypes(@InsetsType int animatingTypes) {
    public void updateAnimatingTypes(@InsetsType int animatingTypes,
            @Nullable ImeTracker.Token statsToken) {
        if (sToolkitSetFrameRateReadOnlyFlagValue) {
            boolean running = animatingTypes != 0;
            if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
@@ -2567,7 +2569,7 @@ public final class ViewRootImpl implements ViewParent,
            }
            mInsetsAnimationRunning = running;
            try {
                mWindowSession.updateAnimatingTypes(mWindow, animatingTypes);
                mWindowSession.updateAnimatingTypes(mWindow, animatingTypes, statsToken);
            } catch (RemoteException e) {
            }
        }
+8 −2
Original line number Diff line number Diff line
@@ -171,9 +171,15 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host {
    }

    @Override
    public void updateAnimatingTypes(@WindowInsets.Type.InsetsType int animatingTypes) {
    public void updateAnimatingTypes(@WindowInsets.Type.InsetsType int animatingTypes,
            @Nullable ImeTracker.Token statsToken) {
        if (mViewRoot != null) {
            mViewRoot.updateAnimatingTypes(animatingTypes);
            ImeTracker.forLogging().onProgress(statsToken,
                    ImeTracker.PHASE_CLIENT_UPDATE_ANIMATING_TYPES);
            mViewRoot.updateAnimatingTypes(animatingTypes, statsToken);
        } else {
            ImeTracker.forLogging().onFailed(statsToken,
                    ImeTracker.PHASE_CLIENT_UPDATE_ANIMATING_TYPES);
        }
    }

Loading