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

Commit a581b4b1 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Fix missing operation when hiding window for rotation

Commit d8152bdd changed to use a map of token operation to
decide the animation appearance. But forgot to migrate the
usage of hideImmediately, that only hides the surface without
storing the information so when the window is drawn in new
rotation (e.g. IME), the controller doesn't know the window
should be shown again.

Fix: 222424027
Test: atest DisplayContentTests#testApplyTopFixedRotationTransform
Change-Id: I8f45bbd73ad06f9961aa55f3c05a571f77c5655b
parent 1be9ef4f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -329,8 +329,12 @@ class AsyncRotationController extends FadeAnimationController implements Consume
    void hideImmediately(WindowToken windowToken) {
        final boolean original = mHideImmediately;
        mHideImmediately = true;
        final Operation op = new Operation(Operation.ACTION_FADE);
        mTargetWindowTokens.put(windowToken, op);
        fadeWindowToken(false /* show */, windowToken, ANIMATION_TYPE_FIXED_TRANSFORM);
        op.mLeash = windowToken.getAnimationLeash();
        mHideImmediately = original;
        if (DEBUG) Slog.d(TAG, "hideImmediately " + windowToken.getTopChild());
    }

    /** Returns {@code true} if the window will rotate independently. */
+4 −1
Original line number Diff line number Diff line
@@ -1370,7 +1370,9 @@ public class DisplayContentTests extends WindowTestsBase {
                ROTATION_0 /* oldRotation */, ROTATION_90 /* newRotation */,
                false /* forceUpdate */));

        assertNotNull(mDisplayContent.getAsyncRotationController());
        final AsyncRotationController asyncRotationController =
                mDisplayContent.getAsyncRotationController();
        assertNotNull(asyncRotationController);
        assertTrue(mStatusBarWindow.isAnimating(PARENTS, ANIMATION_TYPE_FIXED_TRANSFORM));
        assertTrue(mNavBarWindow.isAnimating(PARENTS, ANIMATION_TYPE_FIXED_TRANSFORM));
        // Notification shade may have its own view animation in real case so do not fade out it.
@@ -1443,6 +1445,7 @@ public class DisplayContentTests extends WindowTestsBase {
        mDisplayContent.setImeLayeringTarget(mAppWindow);
        LocalServices.getService(WindowManagerInternal.class).onToggleImeRequested(true /* show */,
                app.token, app.token, mDisplayContent.mDisplayId);
        assertTrue(asyncRotationController.isTargetToken(mImeWindow.mToken));
        assertTrue(mImeWindow.mToken.hasFixedRotationTransform());
        assertTrue(mImeWindow.isAnimating(PARENTS, ANIMATION_TYPE_FIXED_TRANSFORM));