Loading core/java/android/content/pm/ActivityInfo.java +17 −0 Original line number Diff line number Diff line Loading @@ -1331,6 +1331,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * This change id is the gatekeeper for all treatments that force a given min aspect ratio. * Enabling this change will allow the following min aspect ratio treatments to be applied: * <ul> * <li>OVERRIDE_MIN_ASPECT_RATIO_SMALL * <li>OVERRIDE_MIN_ASPECT_RATIO_MEDIUM * <li>OVERRIDE_MIN_ASPECT_RATIO_LARGE * </ul> Loading Loading @@ -1371,6 +1372,22 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { @TestApi public static final long OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY = 203647190L; // buganizer id /** * This change id sets the activity's min aspect ratio to a small value as defined by * OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE. * * This treatment only takes effect if OVERRIDE_MIN_ASPECT_RATIO is also enabled. * @hide */ @ChangeId @Overridable @Disabled // TODO(b/349060719): Add CTS tests. public static final long OVERRIDE_MIN_ASPECT_RATIO_SMALL = 349045028L; // buganizer id /** @hide Small override aspect ratio, currently 4:3. */ public static final float OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE = 4 / 3f; /** * This change id sets the activity's min aspect ratio to a medium value as defined by * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE. Loading services/core/java/com/android/server/wm/ActivityRecord.java +6 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_ import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_LARGE; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN; import static android.content.pm.ActivityInfo.PERSIST_ACROSS_REBOOTS; import static android.content.pm.ActivityInfo.PERSIST_ROOT_ONLY; Loading Loading @@ -9921,6 +9922,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return Math.max(ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, info.getMinAspectRatio()); } if (info.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_SMALL)) { return Math.max(ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE, info.getMinAspectRatio()); } return info.getMinAspectRatio(); } Loading services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +41 −0 Original line number Diff line number Diff line Loading @@ -1313,6 +1313,47 @@ public class SizeCompatTests extends WindowTestsBase { assertActivityMaxBoundsSandboxed(activity); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL}) public void testOverrideMinAspectRatioSmall_overridden() { final int dh = 1200; final int dw = 1000; setUpDisplaySizeWithApp(dw, dh); // Create a size compat activity on the same task. final ActivityRecord activity = getActivityBuilderOnSameTask() .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) .build(); final Rect bounds = activity.getBounds(); assertEquals(dh, bounds.height()); assertEquals(dh / ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE, bounds.width(), 0.5f); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL}) public void testOverrideMinAspectRatioSmall_notOverridden() { final int dh = 1200; final int dw = 1000; setUpDisplaySizeWithApp(dw, dh); // Create a size compat activity on the same task. final ActivityRecord activity = getActivityBuilderOnSameTask() .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) .setMinAspectRatio(OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE) .build(); // Activity's requested aspect ratio is larger than OVERRIDE_MIN_ASPECT_RATIO_SMALL, // so OVERRIDE_MIN_ASPECT_RATIO_SMALL is ignored. final Rect bounds = activity.getBounds(); assertEquals(dh, bounds.height()); assertEquals(dh / OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE, bounds.width(), 0.5f); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) Loading Loading
core/java/android/content/pm/ActivityInfo.java +17 −0 Original line number Diff line number Diff line Loading @@ -1331,6 +1331,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * This change id is the gatekeeper for all treatments that force a given min aspect ratio. * Enabling this change will allow the following min aspect ratio treatments to be applied: * <ul> * <li>OVERRIDE_MIN_ASPECT_RATIO_SMALL * <li>OVERRIDE_MIN_ASPECT_RATIO_MEDIUM * <li>OVERRIDE_MIN_ASPECT_RATIO_LARGE * </ul> Loading Loading @@ -1371,6 +1372,22 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { @TestApi public static final long OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY = 203647190L; // buganizer id /** * This change id sets the activity's min aspect ratio to a small value as defined by * OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE. * * This treatment only takes effect if OVERRIDE_MIN_ASPECT_RATIO is also enabled. * @hide */ @ChangeId @Overridable @Disabled // TODO(b/349060719): Add CTS tests. public static final long OVERRIDE_MIN_ASPECT_RATIO_SMALL = 349045028L; // buganizer id /** @hide Small override aspect ratio, currently 4:3. */ public static final float OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE = 4 / 3f; /** * This change id sets the activity's min aspect ratio to a medium value as defined by * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE. Loading
services/core/java/com/android/server/wm/ActivityRecord.java +6 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_ import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_LARGE; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN; import static android.content.pm.ActivityInfo.PERSIST_ACROSS_REBOOTS; import static android.content.pm.ActivityInfo.PERSIST_ROOT_ONLY; Loading Loading @@ -9921,6 +9922,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return Math.max(ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, info.getMinAspectRatio()); } if (info.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_SMALL)) { return Math.max(ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE, info.getMinAspectRatio()); } return info.getMinAspectRatio(); } Loading
services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +41 −0 Original line number Diff line number Diff line Loading @@ -1313,6 +1313,47 @@ public class SizeCompatTests extends WindowTestsBase { assertActivityMaxBoundsSandboxed(activity); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL}) public void testOverrideMinAspectRatioSmall_overridden() { final int dh = 1200; final int dw = 1000; setUpDisplaySizeWithApp(dw, dh); // Create a size compat activity on the same task. final ActivityRecord activity = getActivityBuilderOnSameTask() .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) .build(); final Rect bounds = activity.getBounds(); assertEquals(dh, bounds.height()); assertEquals(dh / ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL_VALUE, bounds.width(), 0.5f); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_SMALL}) public void testOverrideMinAspectRatioSmall_notOverridden() { final int dh = 1200; final int dw = 1000; setUpDisplaySizeWithApp(dw, dh); // Create a size compat activity on the same task. final ActivityRecord activity = getActivityBuilderOnSameTask() .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) .setMinAspectRatio(OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE) .build(); // Activity's requested aspect ratio is larger than OVERRIDE_MIN_ASPECT_RATIO_SMALL, // so OVERRIDE_MIN_ASPECT_RATIO_SMALL is ignored. final Rect bounds = activity.getBounds(); assertEquals(dh, bounds.height()); assertEquals(dh / OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE, bounds.width(), 0.5f); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) Loading