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

Commit f1bf0be4 authored by Tiger Huang's avatar Tiger Huang Committed by Android (Google) Code Review
Browse files

Merge "Fix InsetsState#set if this == other" into main

parents 8c43addd 2e8a64a9
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -619,6 +619,7 @@ public class InsetsState implements Parcelable {
    }

    public void set(InsetsState other, boolean copySources) {
        if (this != other) {
            mDisplayFrame.set(other.mDisplayFrame);
            mDisplayCutout.set(other.mDisplayCutout);
            mRoundedCorners = other.getRoundedCorners();
@@ -633,6 +634,11 @@ public class InsetsState implements Parcelable {
                        ? new InsetsSource(otherSource)
                        : otherSource);
            }
        } else if (copySources) {
            for (int i = 0, size = mSources.size(); i < size; i++) {
                mSources.setValueAt(i, new InsetsSource(mSources.valueAt(i)));
            }
        }
    }

    /**
@@ -643,6 +649,9 @@ public class InsetsState implements Parcelable {
     * @param types the only types of sources would be set.
     */
    public void set(InsetsState other, @InsetsType int types) {
        if (this == other) {
            return;
        }
        mDisplayFrame.set(other.mDisplayFrame);
        mDisplayCutout.set(other.mDisplayCutout);
        mRoundedCorners = other.getRoundedCorners();
+49 −0
Original line number Diff line number Diff line
@@ -657,6 +657,55 @@ public class InsetsStateTest {
        assertEquals(mState, mState2);
    }

    @Test
    public void testSet() {
        mState.getOrCreateSource(ID_IME, ime())
                .setFrame(new Rect(1, 2, 3, 4));
        mState.getOrCreateSource(ID_STATUS_BAR, statusBars())
                .setFrame(new Rect(5, 6, 7, 8));
        final int size = mState.sourceSize();

        mState.set(mState);
        assertEquals(size, mState.sourceSize());
        mState.set(mState, true /* copiesSource */);
        assertEquals(size, mState.sourceSize());

        mState2.getOrCreateSource(ID_NAVIGATION_BAR, navigationBars())
                .setFrame(new Rect(9, 10, 11, 12));
        mState2.set(mState);
        assertEquals(size, mState2.sourceSize());
        assertEquals(mState, mState2);

        mState2.getOrCreateSource(ID_NAVIGATION_BAR, navigationBars())
                .setFrame(new Rect(13, 14, 15, 16));
        mState2.set(mState, true /* copiesSource */);
        assertEquals(size, mState2.sourceSize());
        assertEquals(mState, mState2);
    }

    @Test
    public void testSetForTypes() {
        mState.getOrCreateSource(ID_IME, ime())
                .setFrame(new Rect(1, 2, 3, 4));
        mState.getOrCreateSource(ID_STATUS_BAR, statusBars())
                .setFrame(new Rect(5, 6, 7, 8));
        final int size = mState.sourceSize();

        mState.set(mState, ime() | statusBars());
        assertEquals(size, mState.sourceSize());

        mState2.getOrCreateSource(ID_NAVIGATION_BAR, navigationBars())
                .setFrame(new Rect(9, 10, 11, 12));
        mState2.set(mState, ime() | statusBars());
        assertEquals(
                mState.getOrCreateSource(ID_IME, ime()),
                mState2.getOrCreateSource(ID_IME, ime()));
        assertEquals(
                mState.getOrCreateSource(ID_IME, statusBars()),
                mState2.getOrCreateSource(ID_IME, statusBars()));
        assertEquals(size + 1, mState2.sourceSize());
    }

    @Test
    public void testCopy() {
        mState.getOrCreateSource(ID_IME, ime())