Apply minimized offset when fetching new aspect ratio bounds.
Bug: 35091993
Test: Minimize a PiP activity, and then force it to change aspect ratio
Change-Id: I0edafcdefcb68224ca6b476b13819847b6b932d9
diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java
index a872ea4..6a8417dc 100644
--- a/services/core/java/com/android/server/wm/PinnedStackController.java
+++ b/services/core/java/com/android/server/wm/PinnedStackController.java
@@ -105,6 +105,7 @@
private final DisplayMetrics mTmpMetrics = new DisplayMetrics();
private final Rect mTmpInsets = new Rect();
private final Rect mTmpRect = new Rect();
+ private final Point mTmpDisplaySize = new Point();
/**
* The callback object passed to listeners for them to notify the controller of state changes.
@@ -209,6 +210,9 @@
final int top = (int) (stackBounds.centerY() - height / 2f);
stackBounds.set(left, top, left + width, top + height);
mSnapAlgorithm.applySnapFraction(stackBounds, getMovementBounds(stackBounds), snapFraction);
+ if (mIsMinimized) {
+ applyMinimizedOffset(stackBounds, getMovementBounds(stackBounds));
+ }
return stackBounds;
}
@@ -269,11 +273,7 @@
mSnapAlgorithm.applySnapFraction(postChangeStackBounds, postChangeMovementBounds,
snapFraction);
if (mIsMinimized) {
- final Point displaySize = new Point(mDisplayInfo.logicalWidth,
- mDisplayInfo.logicalHeight);
- mService.getStableInsetsLocked(displayContent.getDisplayId(), mStableInsets);
- mSnapAlgorithm.applyMinimizedOffset(postChangeStackBounds, postChangeMovementBounds,
- displaySize, mStableInsets);
+ applyMinimizedOffset(postChangeStackBounds, postChangeMovementBounds);
}
notifyMovementBoundsChanged(false /* fromImeAdjustment */);
}
@@ -387,6 +387,16 @@
}
/**
+ * Applies the minimized offsets to the given stack bounds.
+ */
+ private void applyMinimizedOffset(Rect stackBounds, Rect movementBounds) {
+ mTmpDisplaySize.set(mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight);
+ mService.getStableInsetsLocked(mDisplayContent.getDisplayId(), mStableInsets);
+ mSnapAlgorithm.applyMinimizedOffset(stackBounds, movementBounds, mTmpDisplaySize,
+ mStableInsets);
+ }
+
+ /**
* @return the pixels for a given dp value.
*/
private int dpToPx(float dpValue, DisplayMetrics dm) {