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

Commit a17315ee authored by Ryan Lin's avatar Ryan Lin Committed by Android (Google) Code Review
Browse files

Merge "Fix uncleared fields of windowinfo after recycling"

parents b68ab077 c46e2a86
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -208,6 +208,8 @@ public class WindowInfo implements Parcelable {
            mTransformMatrix[i] = 0;
        }
        mMagnificationSpec.clear();
        title = null;
        accessibilityIdOfAnchor = AccessibilityNodeInfo.UNDEFINED_NODE_ID;
    }

    public static final @android.annotation.NonNull Parcelable.Creator<WindowInfo> CREATOR =
+34 −16
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.graphics.Matrix;
import android.os.IBinder;
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
import android.text.TextUtils;
import android.view.accessibility.AccessibilityNodeInfo;

import androidx.test.filters.SmallTest;
@@ -82,22 +83,7 @@ public class WindowInfoTest {
    public void testDefaultValues() {
        WindowInfo w = WindowInfo.obtain();

        assertEquals(0, w.type);
        assertEquals(0, w.layer);
        assertEquals(AccessibilityNodeInfo.UNDEFINED_NODE_ID, w.accessibilityIdOfAnchor);
        assertEquals(Display.INVALID_DISPLAY, w.displayId);
        assertEquals(ActivityTaskManager.INVALID_TASK_ID, w.taskId);
        assertNull(w.title);
        assertNull(w.token);
        assertNull(w.childTokens);
        assertNull(w.parentToken);
        assertNull(w.activityToken);
        assertFalse(w.focused);
        assertFalse(w.inPictureInPicture);
        assertFalse(w.hasFlagWatchOutsideTouch);
        assertTrue(w.regionInScreen.isEmpty());
        assertEquals(w.mTransformMatrix.length, 9);
        assertTrue(w.mMagnificationSpec.isNop());
        assertDefaultValue(w);
    }

    @SmallTest
@@ -114,6 +100,37 @@ public class WindowInfoTest {
        }
    }

    @SmallTest
    @Test
    public void testRecycle_fallbackToDefaultValues() {
        WindowInfo w = WindowInfo.obtain();
        initTestWindowInfo(w);
        w.recycle();

        assertDefaultValue(w);
    }

    private static void assertDefaultValue(WindowInfo windowinfo) {
        assertEquals(0, windowinfo.type);
        assertEquals(0, windowinfo.layer);
        assertEquals(AccessibilityNodeInfo.UNDEFINED_NODE_ID, windowinfo.accessibilityIdOfAnchor);
        assertEquals(Display.INVALID_DISPLAY, windowinfo.displayId);
        assertEquals(ActivityTaskManager.INVALID_TASK_ID, windowinfo.taskId);
        assertNull(windowinfo.title);
        assertNull(windowinfo.token);
        if (windowinfo.childTokens != null) {
            assertTrue(windowinfo.childTokens.isEmpty());
        }
        assertNull(windowinfo.parentToken);
        assertNull(windowinfo.activityToken);
        assertFalse(windowinfo.focused);
        assertFalse(windowinfo.inPictureInPicture);
        assertFalse(windowinfo.hasFlagWatchOutsideTouch);
        assertTrue(windowinfo.regionInScreen.isEmpty());
        assertEquals(windowinfo.mTransformMatrix.length, 9);
        assertTrue(windowinfo.mMagnificationSpec.isNop());
    }

    private boolean areWindowsEqual(WindowInfo w1, WindowInfo w2) {
        boolean equality = w1.toString().contentEquals(w2.toString());
        equality &= w1.token == w2.token;
@@ -123,6 +140,7 @@ public class WindowInfoTest {
        equality &= w1.regionInScreen.equals(w2.regionInScreen);
        equality &= w1.mMagnificationSpec.equals(w2.mMagnificationSpec);
        equality &= Arrays.equals(w1.mTransformMatrix, w2.mTransformMatrix);
        equality &= TextUtils.equals(w1.title, w2.title);
        return equality;
    }