diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 16 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java | 3 |
2 files changed, 10 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 5377db4402a0..6f0633c3fb89 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6145,10 +6145,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mCompatDisplayInsets == null || !shouldUseSizeCompatMode()) { return false; } - final Configuration resolvedConfig = getResolvedOverrideConfiguration(); - final Rect resolvedAppBounds = resolvedConfig.windowConfiguration.getAppBounds(); - if (resolvedAppBounds == null) { - // The override configuration has not been resolved yet. + final Rect appBounds = getConfiguration().windowConfiguration.getAppBounds(); + if (appBounds == null) { + // The app bounds hasn't been computed yet. return false; } @@ -6156,13 +6155,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Although colorMode, screenLayout, smallestScreenWidthDp are also fixed, generally these // fields should be changed with density and bounds, so here only compares the most // significant field. - if (parentConfig.densityDpi != resolvedConfig.densityDpi) { + if (parentConfig.densityDpi != getConfiguration().densityDpi) { return true; } final Rect parentAppBounds = parentConfig.windowConfiguration.getAppBounds(); - final int appWidth = resolvedAppBounds.width(); - final int appHeight = resolvedAppBounds.height(); + final int appWidth = appBounds.width(); + final int appHeight = appBounds.height(); final int parentAppWidth = parentAppBounds.width(); final int parentAppHeight = parentAppBounds.height(); if (parentAppWidth == appWidth && parentAppHeight == appHeight) { @@ -6181,7 +6180,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // The rest of the condition is that only one side is smaller than the parent, but it still // needs to exclude the cases where the size is limited by the fixed aspect ratio. if (info.maxAspectRatio > 0) { - final float aspectRatio = Math.max(appWidth, appHeight) / Math.min(appWidth, appHeight); + final float aspectRatio = + (float) Math.max(appWidth, appHeight) / Math.min(appWidth, appHeight); if (aspectRatio >= info.maxAspectRatio) { // The current size has reached the max aspect ratio. return false; 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 212931b76b88..b104622b250c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -265,7 +265,8 @@ public class SizeCompatTests extends ActivityTestsBase { setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build()); prepareUnresizable(1.4f /* maxAspect */, SCREEN_ORIENTATION_LANDSCAPE); - assertTrue(mActivity.inSizeCompatMode()); + // The display aspect ratio 2.5 > 1.4 (max of activity), so the size is fitted. + assertFalse(mActivity.inSizeCompatMode()); final Rect originalBounds = new Rect(mActivity.getBounds()); final Rect originalAppBounds = new Rect(mActivity.getWindowConfiguration().getAppBounds()); |