[DO NOT MERGE] Handle landscape and portrait display for PIP rotation

Both landscape or portrait display screen scenarios
should be handled when logicalWidth and LogicalHeight
are updated during the rotation of a pip activity

Bug: 185196174
Signed-off-by: Salini Venate <salini.venate@intel.com>
Signed-off-by: Swee Yee Fonn <swee.yee.fonn@intel.com>
Change-Id: Ic0dffb059f1a430ae5b08d91f1fa0d7b585c25ef
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testPinnedStackInBoundsAfterRotation
This commit is contained in:
Salini Venate
2021-03-31 14:29:54 +05:30
committed by Karthik Ramakrishnan
parent 67b816def6
commit d7282448a6

View File

@@ -80,6 +80,7 @@ public class PipBoundsHandler {
private int mImeHeight;
private boolean mIsShelfShowing;
private int mShelfHeight;
private boolean mDefaultLandscape;
private final DisplayController.OnDisplaysChangedListener mDisplaysChangedListener =
new DisplayController.OnDisplaysChangedListener() {
@@ -87,6 +88,7 @@ public class PipBoundsHandler {
public void onDisplayAdded(int displayId) {
if (displayId == mContext.getDisplayId()) {
mDisplayLayout.set(mDisplayController.getDisplayLayout(displayId));
mDefaultLandscape = (mDisplayInfo.logicalWidth > mDisplayInfo.logicalHeight);
}
}
};
@@ -362,9 +364,17 @@ public class PipBoundsHandler {
private void updateDisplayInfoIfNeeded() {
final boolean updateNeeded;
if ((mDisplayInfo.rotation == ROTATION_0) || (mDisplayInfo.rotation == ROTATION_180)) {
updateNeeded = (mDisplayInfo.logicalWidth > mDisplayInfo.logicalHeight);
if (!mDefaultLandscape) {
updateNeeded = (mDisplayInfo.logicalWidth > mDisplayInfo.logicalHeight);
} else {
updateNeeded = (mDisplayInfo.logicalWidth < mDisplayInfo.logicalHeight);
}
} else {
updateNeeded = (mDisplayInfo.logicalWidth < mDisplayInfo.logicalHeight);
if (!mDefaultLandscape) {
updateNeeded = (mDisplayInfo.logicalWidth < mDisplayInfo.logicalHeight);
} else {
updateNeeded = (mDisplayInfo.logicalWidth > mDisplayInfo.logicalHeight);
}
}
if (updateNeeded) {
final int newLogicalHeight = mDisplayInfo.logicalWidth;