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

Commit 943d1130 authored by Charles Chen's avatar Charles Chen Committed by Android (Google) Code Review
Browse files

Merge "Fix TaskPositionerTests" into qt-dev

parents 9d1465d0 2cb5a0f0
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);