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

Commit 85d7605b authored by Ming-Shin Lu's avatar Ming-Shin Lu Committed by Automerger Merge Worker
Browse files

Merge "Replace WC#inAppOrRecentsTransition with WS#inTransitionSelfOrParent"...

Merge "Replace WC#inAppOrRecentsTransition with WS#inTransitionSelfOrParent" into tm-dev am: c762d22d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17220543

Change-Id: I40b303b1877b5a920ac10f8455fa78388e5967ff
parents cffe2173 c762d22d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3973,7 +3973,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            boolean nonAppImeTargetAnimatingExit = mImeLayeringTarget.mAnimatingExit
                    && mImeLayeringTarget.mAttrs.type != TYPE_BASE_APPLICATION
                    && mImeLayeringTarget.isSelfAnimating(0, ANIMATION_TYPE_WINDOW_ANIMATION);
            if (mImeLayeringTarget.inAppOrRecentsTransition() || nonAppImeTargetAnimatingExit) {
            if (mImeLayeringTarget.inTransitionSelfOrParent() || nonAppImeTargetAnimatingExit) {
                showImeScreenshot();
            }
        }
@@ -4167,7 +4167,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
    void removeImeScreenshotIfPossible() {
        if (mImeLayeringTarget == null
                || mImeLayeringTarget.mAttrs.type != TYPE_APPLICATION_STARTING
                && !mImeLayeringTarget.inAppOrRecentsTransition()) {
                && !mImeLayeringTarget.inTransitionSelfOrParent()) {
            removeImeSurfaceImmediately();
        }
    }
+6 −2
Original line number Diff line number Diff line
@@ -243,9 +243,13 @@ class TransitionController {
        return isCollecting() || isPlaying();
    }

    /** @return {@code true} if wc is in a participant subtree */
    /** @return {@code true} if a transition is running in a participant subtree of wc */
    boolean inTransition(@NonNull WindowContainer wc) {
        if (isCollecting(wc)) return true;
        if (isCollecting()) {
            for (WindowContainer p = wc; p != null; p = p.getParent()) {
                if (isCollecting(p)) return true;
            }
        }
        for (int i = mPlayingTransitions.size() - 1; i >= 0; --i) {
            for (WindowContainer p = wc; p != null; p = p.getParent()) {
                if (mPlayingTransitions.get(i).mParticipants.contains(p)) {
+0 −22
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import static com.android.server.wm.IdentifierProto.TITLE;
import static com.android.server.wm.IdentifierProto.USER_ID;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
@@ -1175,27 +1174,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        return mTransitionController.inTransition(this);
    }

    boolean inAppOrRecentsTransition() {
        if (!mTransitionController.isShellTransitionsEnabled()) {
            return isAnimating(PARENTS | TRANSITION,
                    ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS);
        }
        for (WindowContainer p = this; p != null; p = p.getParent()) {
            if (mTransitionController.isCollecting(p)) {
                return true;
            }
        }
        if (inTransition() || mTransitionController.inRecentsTransition(this)) return true;

        for (int i = mChildren.size() - 1; i >= 0; --i) {
            WindowContainer child = mChildren.get(i);
            if (child.inAppOrRecentsTransition()) {
                return true;
            }
        }
        return false;
    }

    boolean isExitAnimationRunningSelfOrChild() {
        if (!mTransitionController.isShellTransitionsEnabled()) {
            return isAnimating(TRANSITION | CHILDREN, WindowState.EXIT_ANIMATING_TYPES);
+13 −1
Original line number Diff line number Diff line
@@ -4984,7 +4984,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
    }

    boolean isExitAnimationRunningSelfOrParent() {
        return inAppOrRecentsTransition()
        return inTransitionSelfOrParent()
                || isAnimating(0 /* flags */, ANIMATION_TYPE_WINDOW_ANIMATION);
    }

@@ -4992,6 +4992,18 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        return isAnimating(CHILDREN, ANIMATION_TYPE_WINDOW_ANIMATION);
    }

    /**
     * @return {@code true} if self or the parent container of the window is in transition.
     * (e.g. The app or recents transition)
     */
    boolean inTransitionSelfOrParent() {
        if (!mTransitionController.isShellTransitionsEnabled()) {
            return isAnimating(PARENTS | TRANSITION,
                    ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS);
        }
        return mTransitionController.inTransition(this);
    }

    private boolean shouldFinishAnimatingExit() {
        // Exit animation might be applied soon.
        if (inTransition()) {
+1 −1
Original line number Diff line number Diff line
@@ -1984,7 +1984,7 @@ public class DisplayContentTests extends WindowTestsBase {
        appWin2.setHasSurface(true);
        assertTrue(appWin2.canBeImeTarget());
        doReturn(true).when(appWin1).isClosing();
        doReturn(true).when(appWin1).inAppOrRecentsTransition();
        doReturn(true).when(appWin1).inTransitionSelfOrParent();

        // Test step 3: Verify appWin2 will be the next IME target and the IME snapshot surface will
        // be attached and shown on the display at this time.
Loading