Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f473639e authored by Graciela Putri's avatar Graciela Putri Committed by Android (Google) Code Review
Browse files

Merge "Add OVERRIDE_MIN_ASPECT_RATIO_SMALL" into main

parents 9741460e 316a7a42
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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>
@@ -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.
+6 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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();
    }
+41 −0
Original line number Diff line number Diff line
@@ -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})