diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index a0d0b30e65f79..5bc0647159a3b 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -944,6 +944,10 @@ public class Activity extends ContextThemeWrapper /** @hide */ 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(); /** Return the intent that started this activity. */ @@ -6999,6 +7003,10 @@ public class Activity extends ContextThemeWrapper writer.print(mResumed); writer.print(" mStopped="); writer.print(mStopped); writer.print(" 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.println(mChangingConfigurations); writer.print(innerPrefix); writer.print("mCurrentConfig="); @@ -8078,6 +8086,7 @@ public class Activity extends ContextThemeWrapper if (mWindow != null) { mWindow.onMultiWindowModeChanged(); } + mLastDispatchedIsInMultiWindowMode = isInMultiWindowMode; onMultiWindowModeChanged(isInMultiWindowMode, newConfig); } @@ -8090,6 +8099,7 @@ public class Activity extends ContextThemeWrapper if (mWindow != null) { mWindow.onPictureInPictureModeChanged(isInPictureInPictureMode); } + mLastDispatchedIsInPictureInPictureMode = isInPictureInPictureMode; onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); } diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 114a56feaf73e..858d198ccd5f0 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -1747,6 +1747,11 @@ public class TaskStack extends WindowContainer implements if (toBounds.width() == fromBounds.width() && toBounds.height() == fromBounds.height()) { 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; } }