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

Commit 97917431 authored by Ikram Gabiyev's avatar Ikram Gabiyev Committed by Android (Google) Code Review
Browse files

Merge "Fix getOverrideMinSize to not go beyond min bounds"

parents e807a4fe efd98e3e
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -45,8 +45,9 @@ public class PipSizeSpecHandler {
    @VisibleForTesting
    final SizeSpecSource mSizeSpecSourceImpl;

    /** The preferred minimum (and default) size specified by apps. */
    /** The preferred minimum (and default minimum) size specified by apps. */
    @Nullable private Size mOverrideMinSize;
    private int mOverridableMinSize;

    /** Used to store values obtained from resource files. */
    private Point mScreenEdgeInsets;
@@ -386,6 +387,8 @@ public class PipSizeSpecHandler {

        mDefaultMinSize = res.getDimensionPixelSize(
                R.dimen.default_minimal_size_pip_resizable_task);
        mOverridableMinSize = res.getDimensionPixelSize(
                R.dimen.overridable_minimal_size_pip_resizable_task);

        final String screenEdgeInsetsDpString = res.getString(
                R.string.config_defaultPictureInPictureScreenEdgeInsets);
@@ -443,13 +446,19 @@ public class PipSizeSpecHandler {
    /** Returns the preferred minimal size specified by the activity in PIP. */
    @Nullable
    public Size getOverrideMinSize() {
        if (mOverrideMinSize != null
                && (mOverrideMinSize.getWidth() < mOverridableMinSize
                || mOverrideMinSize.getHeight() < mOverridableMinSize)) {
            return new Size(mOverridableMinSize, mOverridableMinSize);
        }

        return mOverrideMinSize;
    }

    /** Returns the minimum edge size of the override minimum size, or 0 if not set. */
    public int getOverrideMinEdgeSize() {
        if (mOverrideMinSize == null) return 0;
        return Math.min(mOverrideMinSize.getWidth(), mOverrideMinSize.getHeight());
        return Math.min(getOverrideMinSize().getWidth(), getOverrideMinSize().getHeight());
    }

    public int getMinEdgeSize() {
@@ -505,7 +514,7 @@ public class PipSizeSpecHandler {
        if (mOverrideMinSize == null) {
            return null;
        }
        final Size size = mOverrideMinSize;
        final Size size = getOverrideMinSize();
        final float sizeAspectRatio = size.getWidth() / (float) size.getHeight();
        if (sizeAspectRatio > aspectRatio) {
            // Size is wider, fix the width and increase the height
+3 −3
Original line number Diff line number Diff line
@@ -300,9 +300,9 @@ public class PipBoundsAlgorithmTest extends ShellTestCase {
                (MAX_ASPECT_RATIO + DEFAULT_ASPECT_RATIO) / 2
        };
        final Size[] minimalSizes = new Size[] {
                new Size((int) (100 * aspectRatios[0]), 100),
                new Size((int) (100 * aspectRatios[1]), 100),
                new Size((int) (100 * aspectRatios[2]), 100)
                new Size((int) (200 * aspectRatios[0]), 200),
                new Size((int) (200 * aspectRatios[1]), 200),
                new Size((int) (200 * aspectRatios[2]), 200)
        };
        for (int i = 0; i < aspectRatios.length; i++) {
            final float aspectRatio = aspectRatios[i];
+6 −6
Original line number Diff line number Diff line
@@ -162,10 +162,10 @@ public class PipBoundsStateTest extends ShellTestCase {
    @Test
    public void testSetOverrideMinSize_notChanged_callbackNotInvoked() {
        final Runnable callback = mock(Runnable.class);
        mPipBoundsState.setOverrideMinSize(new Size(5, 5));
        mPipBoundsState.setOverrideMinSize(new Size(100, 150));
        mPipBoundsState.setOnMinimalSizeChangeCallback(callback);

        mPipBoundsState.setOverrideMinSize(new Size(5, 5));
        mPipBoundsState.setOverrideMinSize(new Size(100, 150));

        verify(callback, never()).run();
    }
@@ -175,11 +175,11 @@ public class PipBoundsStateTest extends ShellTestCase {
        mPipBoundsState.setOverrideMinSize(null);
        assertEquals(0, mPipBoundsState.getOverrideMinEdgeSize());

        mPipBoundsState.setOverrideMinSize(new Size(5, 10));
        assertEquals(5, mPipBoundsState.getOverrideMinEdgeSize());
        mPipBoundsState.setOverrideMinSize(new Size(100, 110));
        assertEquals(100, mPipBoundsState.getOverrideMinEdgeSize());

        mPipBoundsState.setOverrideMinSize(new Size(15, 10));
        assertEquals(10, mPipBoundsState.getOverrideMinEdgeSize());
        mPipBoundsState.setOverrideMinSize(new Size(150, 200));
        assertEquals(150, mPipBoundsState.getOverrideMinEdgeSize());
    }

    @Test