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

Commit f0b5fb17 authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Ensure bounds animination for expanding PiP window

The internal animation type maybe reset at the end of RecentsAnimation
following the repro path in bug comments. Ensure BOUNDS animation type
if we know for certain that we're expanding / collpasing the PiP window

Added also last reported multi-window and PiP mode in dumpsys. This is
for internal debug purpose only.

Bug: 137849660
Test: Manually, see b/137849660#comment9
Test: dumpsys activity -v all
Change-Id: I0b7d102ccb4bc27dd0e432d1022bc12a42a0c36d
Merged-In: I0b7d102ccb4bc27dd0e432d1022bc12a42a0c36d
(cherry picked from commit 2cebfd5e)
parent d2469209
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -944,6 +944,10 @@ public class Activity extends ContextThemeWrapper
    /** @hide */
    /** @hide */
    boolean mEnterAnimationComplete;
    boolean mEnterAnimationComplete;


    /** Track last dispatched multi-window and PiP mode to client, internal debug purpose **/
    private Boolean mLastDispatchedIsInMultiWindowMode;
    private Boolean mLastDispatchedIsInPictureInPictureMode;

    private static native String getDlWarning();
    private static native String getDlWarning();


    /** Return the intent that started this activity. */
    /** Return the intent that started this activity. */
@@ -6999,6 +7003,10 @@ public class Activity extends ContextThemeWrapper
                writer.print(mResumed); writer.print(" mStopped=");
                writer.print(mResumed); writer.print(" mStopped=");
                writer.print(mStopped); writer.print(" mFinished=");
                writer.print(mStopped); writer.print(" mFinished=");
                writer.println(mFinished);
                writer.println(mFinished);
        writer.print(innerPrefix); writer.print("mLastDispatchedIsInMultiWindowMode=");
                writer.print(mLastDispatchedIsInMultiWindowMode);
                writer.print(" mLastDispatchedIsInPictureInPictureMode=");
                writer.println(mLastDispatchedIsInPictureInPictureMode);
        writer.print(innerPrefix); writer.print("mChangingConfigurations=");
        writer.print(innerPrefix); writer.print("mChangingConfigurations=");
                writer.println(mChangingConfigurations);
                writer.println(mChangingConfigurations);
        writer.print(innerPrefix); writer.print("mCurrentConfig=");
        writer.print(innerPrefix); writer.print("mCurrentConfig=");
@@ -8078,6 +8086,7 @@ public class Activity extends ContextThemeWrapper
        if (mWindow != null) {
        if (mWindow != null) {
            mWindow.onMultiWindowModeChanged();
            mWindow.onMultiWindowModeChanged();
        }
        }
        mLastDispatchedIsInMultiWindowMode = isInMultiWindowMode;
        onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
        onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
    }
    }


@@ -8090,6 +8099,7 @@ public class Activity extends ContextThemeWrapper
        if (mWindow != null) {
        if (mWindow != null) {
            mWindow.onPictureInPictureModeChanged(isInPictureInPictureMode);
            mWindow.onPictureInPictureModeChanged(isInPictureInPictureMode);
        }
        }
        mLastDispatchedIsInPictureInPictureMode = isInPictureInPictureMode;
        onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
        onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
    }
    }


+5 −0
Original line number Original line Diff line number Diff line
@@ -1747,6 +1747,11 @@ public class TaskStack extends WindowContainer<Task> implements
            if (toBounds.width() == fromBounds.width()
            if (toBounds.width() == fromBounds.width()
                    && toBounds.height() == fromBounds.height()) {
                    && toBounds.height() == fromBounds.height()) {
                intendedAnimationType = BoundsAnimationController.BOUNDS;
                intendedAnimationType = BoundsAnimationController.BOUNDS;
            } else if (!fromFullscreen && !toBounds.equals(fromBounds)) {
                // intendedAnimationType may have been reset at the end of RecentsAnimation,
                // force it to BOUNDS type if we know for certain we're animating to
                // a different bounds, especially for expand and collapse of PiP window.
                intendedAnimationType = BoundsAnimationController.BOUNDS;
            }
            }
        }
        }