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 2cebfd5e5f)
This commit is contained in:
Hongwei Wang
2019-07-25 15:14:47 -07:00
parent d2469209ea
commit f0b5fb17fb
2 changed files with 15 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -1747,6 +1747,11 @@ public class TaskStack extends WindowContainer<Task> 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;
}
}