Merge "Fix TaskPositionerTests" into qt-dev

am: 943d1130e4

Change-Id: I3c88ab557cf98628621e587965644371b17e9b34
This commit is contained in:
Charles Chen
2019-04-09 05:45:26 -07:00
committed by android-build-merger
2 changed files with 60 additions and 64 deletions

View File

@@ -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;

View File

@@ -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);