summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Charles Chen <charlesccchen@google.com> 2019-03-22 20:58:00 +0800
committer Charles Chen <charlesccchen@google.com> 2019-04-08 03:42:33 +0000
commit2cb5a0f0cc890d46bfaa85fbcfe829390ba77458 (patch)
treee686db50860d72ab200120b6bdce7a978af23bc2
parent835f260d602a319e6670911ff3887f5c6247b33d (diff)
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
-rw-r--r--services/core/java/com/android/server/wm/TaskPositioner.java3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java121
2 files changed, 60 insertions, 64 deletions
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index 4a0831e39100..7714458bb167 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -104,7 +104,8 @@ class TaskPositioner {
private int mMinVisibleWidth;
private int mMinVisibleHeight;
- private Task mTask;
+ @VisibleForTesting
+ Task mTask;
private boolean mResizing;
private boolean mPreserveOrientation;
private boolean mStartOrientationWasLandscape;
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
index 2377df406fbc..9cdb465dc445 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
@@ -19,16 +19,14 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
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.spyOn;
import static com.android.server.wm.TaskPositioner.MIN_ASPECT;
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_WIDTH_IN_DP;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -39,9 +37,9 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
-import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -53,7 +51,6 @@ import org.junit.Test;
*/
@SmallTest
@Presubmit
-@FlakyTest
public class TaskPositionerTests extends WindowTestsBase {
private static final boolean DEBUGGING = false;
@@ -66,10 +63,9 @@ public class TaskPositionerTests extends WindowTestsBase {
private int mMinVisibleHeight;
private TaskPositioner mPositioner;
private WindowState mWindow;
- private Rect mDimBounds = new Rect();
@Before
- public void setUp() throws Exception {
+ public void setUp() {
TaskPositioner.setFactory(null);
final Display display = mDisplayContent.getDisplay();
@@ -84,17 +80,16 @@ public class TaskPositionerTests extends WindowTestsBase {
mPositioner.register(mDisplayContent);
mWindow = createWindow(null, TYPE_BASE_APPLICATION, "window");
- final Task task = mWindow.getTask();
- spyOn(task);
- doAnswer(invocation -> {
- final Rect rect = (Rect) invocation.getArguments()[0];
- rect.set(mDimBounds);
- return null;
- }).when(task).getDimBounds(any(Rect.class));
-
+ mPositioner.mTask = mWindow.getTask();
mWindow.getStack().setWindowingMode(WINDOWING_MODE_FREEFORM);
}
+ @After
+ public void tearDown() {
+ mWindow = null;
+ mPositioner = null;
+ }
+
@Test
public void testOverrideFactory() {
final boolean[] created = new boolean[1];
@@ -119,11 +114,11 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testBasicFreeWindowResizing() {
final Rect r = new Rect(100, 220, 700, 520);
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
// Start a drag resize starting upper left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
assertBoundsEquals(r, mPositioner.getWindowDragBounds());
// Drag to a good landscape size.
@@ -149,8 +144,8 @@ public class TaskPositionerTests extends WindowTestsBase {
mPositioner.getWindowDragBounds());
// Start a drag resize left and see that only the left coord changes..
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
// Drag to the left.
mPositioner.resizeDrag(0.0f, midY);
@@ -181,77 +176,77 @@ public class TaskPositionerTests extends WindowTestsBase {
final Rect r = new Rect(100, 220, 700, 520);
final int midX = (r.left + r.right) / 2;
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
// Drag upper left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
mPositioner.resizeDrag(0.0f, 0.0f);
- assertTrue(r.left != mPositioner.getWindowDragBounds().left);
+ assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
- assertTrue(r.top != mPositioner.getWindowDragBounds().top);
+ assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag upper.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, midX, r.top - MOUSE_DELTA_Y);
mPositioner.resizeDrag(0.0f, 0.0f);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
- assertTrue(r.top != mPositioner.getWindowDragBounds().top);
+ assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag upper right.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.right + MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.right + MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
mPositioner.resizeDrag(r.right + 100, 0.0f);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
- assertTrue(r.right != mPositioner.getWindowDragBounds().right);
- assertTrue(r.top != mPositioner.getWindowDragBounds().top);
+ assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
+ assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag right.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.right + MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.right + MOUSE_DELTA_X, midY);
mPositioner.resizeDrag(r.right + 100, 0.0f);
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.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag bottom right.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/,
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */,
r.right + MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
mPositioner.resizeDrag(r.right + 100, r.bottom + 100);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
- assertTrue(r.right != mPositioner.getWindowDragBounds().right);
+ assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
- assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
+ assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag bottom.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, midX, r.bottom + MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, midX, r.bottom + MOUSE_DELTA_Y);
mPositioner.resizeDrag(r.right + 100, r.bottom + 100);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
- assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
+ assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag bottom left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
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.top, mPositioner.getWindowDragBounds().top);
- assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
+ assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midX);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
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.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
@@ -264,10 +259,10 @@ public class TaskPositionerTests extends WindowTestsBase {
@Test
public void testLandscapePreservedWindowResizingDragTopLeft() {
final Rect r = new Rect(100, 220, 700, 520);
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
assertBoundsEquals(r, mPositioner.getWindowDragBounds());
// Drag to a good landscape size.
@@ -303,10 +298,10 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testLandscapePreservedWindowResizingDragLeft() {
final Rect r = new Rect(100, 220, 700, 520);
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
// Drag to the left.
mPositioner.resizeDrag(0.0f, midY);
@@ -344,7 +339,7 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testLandscapePreservedWindowResizingDragTop() {
final Rect r = new Rect(100, 220, 700, 520);
final int midX = (r.left + r.right) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
mPositioner.startDrag(mWindow, true /*resizing*/,
true /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
@@ -380,7 +375,7 @@ public class TaskPositionerTests extends WindowTestsBase {
@Test
public void testPortraitPreservedWindowResizingDragTopLeft() {
final Rect r = new Rect(330, 100, 630, 600);
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
mPositioner.startDrag(mWindow, true /*resizing*/,
true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
@@ -414,10 +409,10 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testPortraitPreservedWindowResizingDragLeft() {
final Rect r = new Rect(330, 100, 630, 600);
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
// Drag to the left.
mPositioner.resizeDrag(0.0f, midY);
@@ -457,10 +452,10 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testPortraitPreservedWindowResizingDragTop() {
final Rect r = new Rect(330, 100, 630, 600);
final int midX = (r.left + r.right) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, midX, r.top - MOUSE_DELTA_Y);
// Drag to the left (no change).
mPositioner.resizeDrag(0.0f, r.top);