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

Commit 2cb5a0f0 authored by Charles Chen's avatar Charles Chen
Browse files

Fix TaskPositionerTests

In [1], we use getBounds() instead of getDimBounds(), which makes
original mock useless. This failure was not found since we don't run it
in presubmit. The first attempt is to try to use getBounds() instead of
getDimBounds(). However, it makes tests flaky since we may mock Task
in WindowTestBase#tearDown at the smae time, which lead to
MockException. We use real Task and setBounds directly to prevent the
flaky.
We also fixed some coding conventions in TaskPositionerTests

[1]: Id81d0b0a5f82be28fabed3ad22e713fc4fa7536d

Fix: 128820963
Test: atest TaskPositionerTests

Change-Id: Iaa50b74ccec19a399cfbfa45afa8136acb466055
parent 835f260d
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -104,7 +104,8 @@ class TaskPositioner {
    private int mMinVisibleWidth;
    private int mMinVisibleWidth;
    private int mMinVisibleHeight;
    private int mMinVisibleHeight;


    private Task mTask;
    @VisibleForTesting
    Task mTask;
    private boolean mResizing;
    private boolean mResizing;
    private boolean mPreserveOrientation;
    private boolean mPreserveOrientation;
    private boolean mStartOrientationWasLandscape;
    private boolean mStartOrientationWasLandscape;
+58 −63
Original line number Original line Diff line number Diff line
@@ -19,16 +19,14 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;


import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.wm.TaskPositioner.MIN_ASPECT;
import static com.android.server.wm.TaskPositioner.MIN_ASPECT;
import static com.android.server.wm.WindowManagerService.dipToPixel;
import static com.android.server.wm.WindowManagerService.dipToPixel;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertTrue;


@@ -39,9 +37,9 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Log;
import android.view.Display;
import android.view.Display;


import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;


import org.junit.After;
import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;


@@ -53,7 +51,6 @@ import org.junit.Test;
 */
 */
@SmallTest
@SmallTest
@Presubmit
@Presubmit
@FlakyTest
public class TaskPositionerTests extends WindowTestsBase {
public class TaskPositionerTests extends WindowTestsBase {


    private static final boolean DEBUGGING = false;
    private static final boolean DEBUGGING = false;
@@ -66,10 +63,9 @@ public class TaskPositionerTests extends WindowTestsBase {
    private int mMinVisibleHeight;
    private int mMinVisibleHeight;
    private TaskPositioner mPositioner;
    private TaskPositioner mPositioner;
    private WindowState mWindow;
    private WindowState mWindow;
    private Rect mDimBounds = new Rect();


    @Before
    @Before
    public void setUp() throws Exception {
    public void setUp() {
        TaskPositioner.setFactory(null);
        TaskPositioner.setFactory(null);


        final Display display = mDisplayContent.getDisplay();
        final Display display = mDisplayContent.getDisplay();
@@ -84,17 +80,16 @@ public class TaskPositionerTests extends WindowTestsBase {
        mPositioner.register(mDisplayContent);
        mPositioner.register(mDisplayContent);


        mWindow = createWindow(null, TYPE_BASE_APPLICATION, "window");
        mWindow = createWindow(null, TYPE_BASE_APPLICATION, "window");
        final Task task = mWindow.getTask();
        mPositioner.mTask = mWindow.getTask();
        spyOn(task);
        doAnswer(invocation -> {
            final Rect rect = (Rect) invocation.getArguments()[0];
            rect.set(mDimBounds);
            return null;
        }).when(task).getDimBounds(any(Rect.class));

        mWindow.getStack().setWindowingMode(WINDOWING_MODE_FREEFORM);
        mWindow.getStack().setWindowingMode(WINDOWING_MODE_FREEFORM);
    }
    }


    @After
    public void tearDown() {
        mWindow = null;
        mPositioner = null;
    }

    @Test
    @Test
    public void testOverrideFactory() {
    public void testOverrideFactory() {
        final boolean[] created = new boolean[1];
        final boolean[] created = new boolean[1];
@@ -119,7 +114,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    public void testBasicFreeWindowResizing() {
    public void testBasicFreeWindowResizing() {
        final Rect r = new Rect(100, 220, 700, 520);
        final Rect r = new Rect(100, 220, 700, 520);
        final int midY = (r.top + r.bottom) / 2;
        final int midY = (r.top + r.bottom) / 2;
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        // Start a drag resize starting upper left.
        // Start a drag resize starting upper left.
        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
@@ -181,15 +176,15 @@ public class TaskPositionerTests extends WindowTestsBase {
        final Rect r = new Rect(100, 220, 700, 520);
        final Rect r = new Rect(100, 220, 700, 520);
        final int midX = (r.left + r.right) / 2;
        final int midX = (r.left + r.right) / 2;
        final int midY = (r.top + r.bottom) / 2;
        final int midY = (r.top + r.bottom) / 2;
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        // Drag upper left.
        // Drag upper left.
        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
                false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
        mPositioner.resizeDrag(0.0f, 0.0f);
        mPositioner.resizeDrag(0.0f, 0.0f);
        assertTrue(r.left != mPositioner.getWindowDragBounds().left);
        assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertTrue(r.top != mPositioner.getWindowDragBounds().top);
        assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


        // Drag upper.
        // Drag upper.
@@ -198,7 +193,7 @@ public class TaskPositionerTests extends WindowTestsBase {
        mPositioner.resizeDrag(0.0f, 0.0f);
        mPositioner.resizeDrag(0.0f, 0.0f);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertTrue(r.top != mPositioner.getWindowDragBounds().top);
        assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


        // Drag upper right.
        // Drag upper right.
@@ -206,8 +201,8 @@ public class TaskPositionerTests extends WindowTestsBase {
                false /* preserveOrientation */, r.right + MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
                false /* preserveOrientation */, r.right + MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
        mPositioner.resizeDrag(r.right + 100, 0.0f);
        mPositioner.resizeDrag(r.right + 100, 0.0f);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertTrue(r.right != mPositioner.getWindowDragBounds().right);
        assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertTrue(r.top != mPositioner.getWindowDragBounds().top);
        assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


        // Drag right.
        // Drag right.
@@ -215,7 +210,7 @@ public class TaskPositionerTests extends WindowTestsBase {
                false /* preserveOrientation */, r.right + MOUSE_DELTA_X, midY);
                false /* preserveOrientation */, r.right + MOUSE_DELTA_X, midY);
        mPositioner.resizeDrag(r.right + 100, 0.0f);
        mPositioner.resizeDrag(r.right + 100, 0.0f);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertTrue(r.right != mPositioner.getWindowDragBounds().right);
        assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


@@ -225,9 +220,9 @@ public class TaskPositionerTests extends WindowTestsBase {
                r.right + MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
                r.right + MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
        mPositioner.resizeDrag(r.right + 100, r.bottom + 100);
        mPositioner.resizeDrag(r.right + 100, r.bottom + 100);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertTrue(r.right != mPositioner.getWindowDragBounds().right);
        assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
        assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


        // Drag bottom.
        // Drag bottom.
        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
@@ -236,22 +231,22 @@ public class TaskPositionerTests extends WindowTestsBase {
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
        assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


        // Drag bottom left.
        // Drag bottom left.
        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
                false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
        mPositioner.resizeDrag(0.0f, r.bottom + 100);
        mPositioner.resizeDrag(0.0f, r.bottom + 100);
        assertTrue(r.left != mPositioner.getWindowDragBounds().left);
        assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
        assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);


        // Drag left.
        // Drag left.
        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midX);
                false /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
        mPositioner.resizeDrag(0.0f, r.bottom + 100);
        mPositioner.resizeDrag(0.0f, r.bottom + 100);
        assertTrue(r.left != mPositioner.getWindowDragBounds().left);
        assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.right, mPositioner.getWindowDragBounds().right);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.top, mPositioner.getWindowDragBounds().top);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
        assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
@@ -264,7 +259,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    @Test
    @Test
    public void testLandscapePreservedWindowResizingDragTopLeft() {
    public void testLandscapePreservedWindowResizingDragTopLeft() {
        final Rect r = new Rect(100, 220, 700, 520);
        final Rect r = new Rect(100, 220, 700, 520);
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                true /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
                true /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
@@ -303,7 +298,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    public void testLandscapePreservedWindowResizingDragLeft() {
    public void testLandscapePreservedWindowResizingDragLeft() {
        final Rect r = new Rect(100, 220, 700, 520);
        final Rect r = new Rect(100, 220, 700, 520);
        final int midY = (r.top + r.bottom) / 2;
        final int midY = (r.top + r.bottom) / 2;
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
                true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
@@ -344,7 +339,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    public void testLandscapePreservedWindowResizingDragTop() {
    public void testLandscapePreservedWindowResizingDragTop() {
        final Rect r = new Rect(100, 220, 700, 520);
        final Rect r = new Rect(100, 220, 700, 520);
        final int midX = (r.left + r.right) / 2;
        final int midX = (r.left + r.right) / 2;
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        mPositioner.startDrag(mWindow, true /*resizing*/,
        mPositioner.startDrag(mWindow, true /*resizing*/,
                true /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
                true /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
@@ -380,7 +375,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    @Test
    @Test
    public void testPortraitPreservedWindowResizingDragTopLeft() {
    public void testPortraitPreservedWindowResizingDragTopLeft() {
        final Rect r = new Rect(330, 100, 630, 600);
        final Rect r = new Rect(330, 100, 630, 600);
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        mPositioner.startDrag(mWindow, true /*resizing*/,
        mPositioner.startDrag(mWindow, true /*resizing*/,
                true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
                true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
@@ -414,7 +409,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    public void testPortraitPreservedWindowResizingDragLeft() {
    public void testPortraitPreservedWindowResizingDragLeft() {
        final Rect r = new Rect(330, 100, 630, 600);
        final Rect r = new Rect(330, 100, 630, 600);
        final int midY = (r.top + r.bottom) / 2;
        final int midY = (r.top + r.bottom) / 2;
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
                true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
@@ -457,7 +452,7 @@ public class TaskPositionerTests extends WindowTestsBase {
    public void testPortraitPreservedWindowResizingDragTop() {
    public void testPortraitPreservedWindowResizingDragTop() {
        final Rect r = new Rect(330, 100, 630, 600);
        final Rect r = new Rect(330, 100, 630, 600);
        final int midX = (r.left + r.right) / 2;
        final int midX = (r.left + r.right) / 2;
        mDimBounds.set(r);
        mPositioner.mTask.setBounds(r, true);


        mPositioner.startDrag(mWindow, true /* resizing */,
        mPositioner.startDrag(mWindow, true /* resizing */,
                true /* preserveOrientation */, midX, r.top - MOUSE_DELTA_Y);
                true /* preserveOrientation */, midX, r.top - MOUSE_DELTA_Y);