Loading core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -785,6 +785,7 @@ package android.content.pm { field public static final float OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE = 1.7777778f; field public static final long OVERRIDE_MIN_ASPECT_RATIO_MEDIUM = 180326845L; // 0xabf91bdL field public static final float OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE = 1.5f; field public static final long OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY = 203647190L; // 0xc2368d6L field public static final int RESIZE_MODE_RESIZEABLE = 2; // 0x2 } Loading core/java/android/content/pm/ActivityInfo.java +31 −32 Original line number Diff line number Diff line Loading @@ -995,10 +995,9 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM * OVERRIDE_MIN_ASPECT_RATIO_LARGE * * If OVERRIDE_MIN_ASPECT_RATIO is applied, and the activity's orientation is fixed to * portrait, the min aspect ratio given in the app's manifest will be overridden to the * largest enabled aspect ratio treatment unless the app's manifest value is higher. * TODO(b/203647190): add OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY instead of portrait by default * If OVERRIDE_MIN_ASPECT_RATIO is applied, the min aspect ratio given in the app's manifest * will be overridden to the largest enabled aspect ratio treatment unless the app's manifest * value is higher. * @hide */ @ChangeId Loading @@ -1007,6 +1006,19 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { @TestApi public static final long OVERRIDE_MIN_ASPECT_RATIO = 174042980L; // buganizer id /** * This change id restricts treatments that force a given min aspect ratio to activities * whose orientation is fixed to portrait. * * This treatment only takes effect if OVERRIDE_MIN_ASPECT_RATIO is also enabled. * @hide */ @ChangeId @Overridable @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S) @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 medium value as defined by * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE. Loading Loading @@ -1336,9 +1348,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { */ @SizeChangesSupportMode public int supportsSizeChanges() { if (CompatChanges.isChangeEnabled(FORCE_NON_RESIZE_APP, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(FORCE_NON_RESIZE_APP)) { return SIZE_CHANGES_UNSUPPORTED_OVERRIDE; } Loading @@ -1346,9 +1356,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { return SIZE_CHANGES_SUPPORTED_METADATA; } if (CompatChanges.isChangeEnabled(FORCE_RESIZE_APP, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(FORCE_RESIZE_APP)) { return SIZE_CHANGES_SUPPORTED_OVERRIDE; } Loading @@ -1360,9 +1368,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public boolean neverSandboxDisplayApis() { return CompatChanges.isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)) return isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS) || ConstrainDisplayApisConfig.neverConstrainDisplayApis(applicationInfo); } Loading @@ -1371,9 +1377,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public boolean alwaysSandboxDisplayApis() { return CompatChanges.isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)) return isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS) || ConstrainDisplayApisConfig.alwaysConstrainDisplayApis(applicationInfo); } Loading Loading @@ -1403,31 +1407,28 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public float getMinAspectRatio(@ScreenOrientation int orientation) { // TODO(b/203647190): check orientation only if OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY // In case the activity's orientation isn't fixed to portrait, OVERRIDE_MIN_ASPECT_RATIO // shouldn't be applied. if (applicationInfo == null || !CompatChanges.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)) || !isFixedOrientationPortrait(orientation)) { if (applicationInfo == null || !isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO) || ( isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY) && !isFixedOrientationPortrait(orientation))) { return mMinAspectRatio; } if (CompatChanges.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_LARGE, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_LARGE)) { return Math.max(OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE, mMinAspectRatio); } if (CompatChanges.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_MEDIUM, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_MEDIUM)) { return Math.max(OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, mMinAspectRatio); } return mMinAspectRatio; } private boolean isChangeEnabled(long changeId) { return CompatChanges.isChangeEnabled(changeId, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)); } /** @hide */ public float getManifestMinAspectRatio() { return mMinAspectRatio; Loading Loading @@ -1495,9 +1496,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public boolean shouldCheckMinWidthHeightForMultiWindow() { return CompatChanges.isChangeEnabled(CHECK_MIN_WIDTH_HEIGHT_FOR_MULTI_WINDOW, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)); return isChangeEnabled(CHECK_MIN_WIDTH_HEIGHT_FOR_MULTI_WINDOW); } public void dump(Printer pw, String prefix) { Loading services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +49 −0 Original line number Diff line number Diff line Loading @@ -1084,6 +1084,7 @@ public class SizeCompatTests extends WindowTestsBase { @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioScreenOrientationNotSetThenChangedToPortrait() { // In this test, the activity's orientation isn't fixed to portrait, therefore the override Loading Loading @@ -1115,6 +1116,7 @@ public class SizeCompatTests extends WindowTestsBase { @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioScreenOrientationLandscapeThenChangedToPortrait() { // In this test, the activity's orientation isn't fixed to portrait, therefore the override Loading Loading @@ -1147,6 +1149,7 @@ public class SizeCompatTests extends WindowTestsBase { @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioScreenOrientationPortraitThenChangedToUnspecified() { setUpDisplaySizeWithApp(1000, 1200); Loading Loading @@ -1174,6 +1177,52 @@ public class SizeCompatTests extends WindowTestsBase { assertEquals(1000, activity.getBounds().width()); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) @DisableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY}) public void testOverrideMinAspectRatioPortraitOnlyDisabledScreenOrientationNotSet() { setUpDisplaySizeWithApp(1000, 1200); // Create a size compat activity on the same task. final ActivityRecord activity = new ActivityBuilder(mAtm) .setTask(mTask) .setComponent(ComponentName.createRelative(mContext, SizeCompatTests.class.getName())) .setUid(android.os.Process.myUid()) .build(); // The per-package override forces the activity into a 3:2 aspect ratio assertEquals(1200, activity.getBounds().height()); assertEquals(1200 / ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, activity.getBounds().width(), 0.5); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) @DisableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY}) public void testOverrideMinAspectRatioPortraitOnlyDisabledScreenOrientationLandscape() { // In this test, the activity's orientation isn't fixed to portrait, therefore the override // isn't applied. setUpDisplaySizeWithApp(1000, 1200); // Create a size compat activity on the same task. final ActivityRecord activity = new ActivityBuilder(mAtm) .setTask(mTask) .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) .setComponent(ComponentName.createRelative(mContext, SizeCompatTests.class.getName())) .setUid(android.os.Process.myUid()) .build(); // The per-package override forces the activity into a 3:2 aspect ratio assertEquals(1000 / ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, activity.getBounds().height(), 0.5); assertEquals(1000, activity.getBounds().width()); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioWithoutGlobalOverride() { Loading Loading
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -785,6 +785,7 @@ package android.content.pm { field public static final float OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE = 1.7777778f; field public static final long OVERRIDE_MIN_ASPECT_RATIO_MEDIUM = 180326845L; // 0xabf91bdL field public static final float OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE = 1.5f; field public static final long OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY = 203647190L; // 0xc2368d6L field public static final int RESIZE_MODE_RESIZEABLE = 2; // 0x2 } Loading
core/java/android/content/pm/ActivityInfo.java +31 −32 Original line number Diff line number Diff line Loading @@ -995,10 +995,9 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM * OVERRIDE_MIN_ASPECT_RATIO_LARGE * * If OVERRIDE_MIN_ASPECT_RATIO is applied, and the activity's orientation is fixed to * portrait, the min aspect ratio given in the app's manifest will be overridden to the * largest enabled aspect ratio treatment unless the app's manifest value is higher. * TODO(b/203647190): add OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY instead of portrait by default * If OVERRIDE_MIN_ASPECT_RATIO is applied, the min aspect ratio given in the app's manifest * will be overridden to the largest enabled aspect ratio treatment unless the app's manifest * value is higher. * @hide */ @ChangeId Loading @@ -1007,6 +1006,19 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { @TestApi public static final long OVERRIDE_MIN_ASPECT_RATIO = 174042980L; // buganizer id /** * This change id restricts treatments that force a given min aspect ratio to activities * whose orientation is fixed to portrait. * * This treatment only takes effect if OVERRIDE_MIN_ASPECT_RATIO is also enabled. * @hide */ @ChangeId @Overridable @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S) @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 medium value as defined by * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE. Loading Loading @@ -1336,9 +1348,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { */ @SizeChangesSupportMode public int supportsSizeChanges() { if (CompatChanges.isChangeEnabled(FORCE_NON_RESIZE_APP, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(FORCE_NON_RESIZE_APP)) { return SIZE_CHANGES_UNSUPPORTED_OVERRIDE; } Loading @@ -1346,9 +1356,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { return SIZE_CHANGES_SUPPORTED_METADATA; } if (CompatChanges.isChangeEnabled(FORCE_RESIZE_APP, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(FORCE_RESIZE_APP)) { return SIZE_CHANGES_SUPPORTED_OVERRIDE; } Loading @@ -1360,9 +1368,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public boolean neverSandboxDisplayApis() { return CompatChanges.isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)) return isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS) || ConstrainDisplayApisConfig.neverConstrainDisplayApis(applicationInfo); } Loading @@ -1371,9 +1377,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public boolean alwaysSandboxDisplayApis() { return CompatChanges.isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)) return isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS) || ConstrainDisplayApisConfig.alwaysConstrainDisplayApis(applicationInfo); } Loading Loading @@ -1403,31 +1407,28 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public float getMinAspectRatio(@ScreenOrientation int orientation) { // TODO(b/203647190): check orientation only if OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY // In case the activity's orientation isn't fixed to portrait, OVERRIDE_MIN_ASPECT_RATIO // shouldn't be applied. if (applicationInfo == null || !CompatChanges.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)) || !isFixedOrientationPortrait(orientation)) { if (applicationInfo == null || !isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO) || ( isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY) && !isFixedOrientationPortrait(orientation))) { return mMinAspectRatio; } if (CompatChanges.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_LARGE, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_LARGE)) { return Math.max(OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE, mMinAspectRatio); } if (CompatChanges.isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_MEDIUM, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid))) { if (isChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_MEDIUM)) { return Math.max(OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, mMinAspectRatio); } return mMinAspectRatio; } private boolean isChangeEnabled(long changeId) { return CompatChanges.isChangeEnabled(changeId, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)); } /** @hide */ public float getManifestMinAspectRatio() { return mMinAspectRatio; Loading Loading @@ -1495,9 +1496,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { * @hide */ public boolean shouldCheckMinWidthHeightForMultiWindow() { return CompatChanges.isChangeEnabled(CHECK_MIN_WIDTH_HEIGHT_FOR_MULTI_WINDOW, applicationInfo.packageName, UserHandle.getUserHandleForUid(applicationInfo.uid)); return isChangeEnabled(CHECK_MIN_WIDTH_HEIGHT_FOR_MULTI_WINDOW); } public void dump(Printer pw, String prefix) { Loading
services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +49 −0 Original line number Diff line number Diff line Loading @@ -1084,6 +1084,7 @@ public class SizeCompatTests extends WindowTestsBase { @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioScreenOrientationNotSetThenChangedToPortrait() { // In this test, the activity's orientation isn't fixed to portrait, therefore the override Loading Loading @@ -1115,6 +1116,7 @@ public class SizeCompatTests extends WindowTestsBase { @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioScreenOrientationLandscapeThenChangedToPortrait() { // In this test, the activity's orientation isn't fixed to portrait, therefore the override Loading Loading @@ -1147,6 +1149,7 @@ public class SizeCompatTests extends WindowTestsBase { @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioScreenOrientationPortraitThenChangedToUnspecified() { setUpDisplaySizeWithApp(1000, 1200); Loading Loading @@ -1174,6 +1177,52 @@ public class SizeCompatTests extends WindowTestsBase { assertEquals(1000, activity.getBounds().width()); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) @DisableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY}) public void testOverrideMinAspectRatioPortraitOnlyDisabledScreenOrientationNotSet() { setUpDisplaySizeWithApp(1000, 1200); // Create a size compat activity on the same task. final ActivityRecord activity = new ActivityBuilder(mAtm) .setTask(mTask) .setComponent(ComponentName.createRelative(mContext, SizeCompatTests.class.getName())) .setUid(android.os.Process.myUid()) .build(); // The per-package override forces the activity into a 3:2 aspect ratio assertEquals(1200, activity.getBounds().height()); assertEquals(1200 / ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, activity.getBounds().width(), 0.5); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) @DisableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY}) public void testOverrideMinAspectRatioPortraitOnlyDisabledScreenOrientationLandscape() { // In this test, the activity's orientation isn't fixed to portrait, therefore the override // isn't applied. setUpDisplaySizeWithApp(1000, 1200); // Create a size compat activity on the same task. final ActivityRecord activity = new ActivityBuilder(mAtm) .setTask(mTask) .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) .setComponent(ComponentName.createRelative(mContext, SizeCompatTests.class.getName())) .setUid(android.os.Process.myUid()) .build(); // The per-package override forces the activity into a 3:2 aspect ratio assertEquals(1000 / ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE, activity.getBounds().height(), 0.5); assertEquals(1000, activity.getBounds().width()); } @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioWithoutGlobalOverride() { Loading