diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 11 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java | 7 |
2 files changed, 13 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 5668454b7bb6..304860c2588f 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6456,14 +6456,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A @Override public boolean matchParentBounds() { - if (super.matchParentBounds() && mCompatDisplayInsets == null) { + final Rect overrideBounds = getResolvedOverrideBounds(); + if (overrideBounds.isEmpty()) { return true; } - // An activity in size compatibility mode may have resolved override bounds, so the exact - // bounds should also be checked. Otherwise IME window will show with offset. See - // {@link DisplayContent#isImeAttachedToApp}. + // An activity in size compatibility mode may have override bounds which equals to its + // parent bounds, so the exact bounds should also be checked to allow IME window to attach + // to the activity. See {@link DisplayContent#isImeAttachedToApp}. final WindowContainer parent = getParent(); - return parent == null || parent.getBounds().equals(getResolvedOverrideBounds()); + return parent == null || parent.getBounds().equals(overrideBounds); } @Override diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index 15b395c8814e..e742b32ff4b8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -251,6 +251,13 @@ public class SizeCompatTests extends ActivityTestsBase { mActivity.mDisplayContent.mInputMethodTarget = addWindowToActivity(mActivity); // Make sure IME cannot attach to the app, otherwise IME window will also be shifted. assertFalse(mActivity.mDisplayContent.isImeAttachedToApp()); + + // Recompute the natural configuration without resolving size compat configuration. + mActivity.clearSizeCompatMode(); + mActivity.onConfigurationChanged(mTask.getConfiguration()); + // It should keep non-attachable because the resolved bounds will be computed according to + // the aspect ratio that won't match its parent bounds. + assertFalse(mActivity.mDisplayContent.isImeAttachedToApp()); } @Test |