Apply WindowTestRunner to more WM tests
- Remove the manual locking inside test methods.
- Replace test thread with display thread for
ActivityTaskManagerService, so it is closer to real case.
- Use null thread for ActivityManagerService so the modules
outside WM won't be created, including:
ActivityManagerConstants, ActiveServices, OomAdjuster,
IntentFirewall, PendingIntentController
Bug: 140284973
Test: atest WmTests
Change-Id: I34dfd716fc1e16d034405a59d2a0f9beef0ffe36
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 44f3ee41..ae40742 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -47,7 +47,6 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.same;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
@@ -72,7 +71,6 @@
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
import android.util.DisplayMetrics;
-import android.util.MutableBoolean;
import android.view.DisplayCutout;
import android.view.Gravity;
import android.view.ISystemGestureExclusionListener;
@@ -88,6 +86,7 @@
import com.android.server.wm.utils.WmDisplayCutout;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
@@ -105,6 +104,7 @@
*/
@SmallTest
@Presubmit
+@RunWith(WindowTestRunner.class)
public class DisplayContentTests extends WindowTestsBase {
@Test
@@ -435,78 +435,70 @@
@Test
public void testDisplayCutout_rot0() {
- synchronized (mWm.getWindowManagerLock()) {
- final DisplayContent dc = createNewDisplay();
- dc.mInitialDisplayWidth = 200;
- dc.mInitialDisplayHeight = 400;
- Rect r = new Rect(80, 0, 120, 10);
- final DisplayCutout cutout = new WmDisplayCutout(
- fromBoundingRect(r.left, r.top, r.right, r.bottom, BOUNDS_POSITION_TOP), null)
- .computeSafeInsets(200, 400).getDisplayCutout();
+ final DisplayContent dc = createNewDisplay();
+ dc.mInitialDisplayWidth = 200;
+ dc.mInitialDisplayHeight = 400;
+ final Rect r = new Rect(80, 0, 120, 10);
+ final DisplayCutout cutout = new WmDisplayCutout(
+ fromBoundingRect(r.left, r.top, r.right, r.bottom, BOUNDS_POSITION_TOP), null)
+ .computeSafeInsets(200, 400).getDisplayCutout();
- dc.mInitialDisplayCutout = cutout;
- dc.getDisplayRotation().setRotation(Surface.ROTATION_0);
- dc.computeScreenConfiguration(new Configuration()); // recomputes dc.mDisplayInfo.
+ dc.mInitialDisplayCutout = cutout;
+ dc.getDisplayRotation().setRotation(Surface.ROTATION_0);
+ dc.computeScreenConfiguration(new Configuration()); // recomputes dc.mDisplayInfo.
- assertEquals(cutout, dc.getDisplayInfo().displayCutout);
- }
+ assertEquals(cutout, dc.getDisplayInfo().displayCutout);
}
@Test
public void testDisplayCutout_rot90() {
- synchronized (mWm.getWindowManagerLock()) {
- // Prevent mInitialDisplayCutout from being updated from real display (e.g. null
- // if the device has no cutout).
- final DisplayContent dc = createDisplayNoUpdateDisplayInfo();
- // Rotation may use real display info to compute bound, so here also uses the
- // same width and height.
- final int displayWidth = dc.mInitialDisplayWidth;
- final int displayHeight = dc.mInitialDisplayHeight;
- final int cutoutWidth = 40;
- final int cutoutHeight = 10;
- final int left = (displayWidth - cutoutWidth) / 2;
- final int top = 0;
- final int right = (displayWidth + cutoutWidth) / 2;
- final int bottom = cutoutHeight;
+ // Prevent mInitialDisplayCutout from being updated from real display (e.g. null
+ // if the device has no cutout).
+ final DisplayContent dc = createDisplayNoUpdateDisplayInfo();
+ // Rotation may use real display info to compute bound, so here also uses the
+ // same width and height.
+ final int displayWidth = dc.mInitialDisplayWidth;
+ final int displayHeight = dc.mInitialDisplayHeight;
+ final int cutoutWidth = 40;
+ final int cutoutHeight = 10;
+ final int left = (displayWidth - cutoutWidth) / 2;
+ final int top = 0;
+ final int right = (displayWidth + cutoutWidth) / 2;
+ final int bottom = cutoutHeight;
- final Rect r1 = new Rect(left, top, right, bottom);
- final DisplayCutout cutout = new WmDisplayCutout(
- fromBoundingRect(r1.left, r1.top, r1.right, r1.bottom, BOUNDS_POSITION_TOP),
- null)
- .computeSafeInsets(displayWidth, displayHeight).getDisplayCutout();
+ final Rect r1 = new Rect(left, top, right, bottom);
+ final DisplayCutout cutout = new WmDisplayCutout(
+ fromBoundingRect(r1.left, r1.top, r1.right, r1.bottom, BOUNDS_POSITION_TOP), null)
+ .computeSafeInsets(displayWidth, displayHeight).getDisplayCutout();
- dc.mInitialDisplayCutout = cutout;
- dc.getDisplayRotation().setRotation(Surface.ROTATION_90);
- dc.computeScreenConfiguration(new Configuration()); // recomputes dc.mDisplayInfo.
+ dc.mInitialDisplayCutout = cutout;
+ dc.getDisplayRotation().setRotation(Surface.ROTATION_90);
+ dc.computeScreenConfiguration(new Configuration()); // recomputes dc.mDisplayInfo.
- // ----o---------- -------------
- // | | | | |
- // | ------o | o---
- // | | | |
- // | | -> | |
- // | | ---o
- // | | |
- // | | -------------
- final Rect r = new Rect(top, left, bottom, right);
- assertEquals(new WmDisplayCutout(
- fromBoundingRect(r.left, r.top, r.right, r.bottom, BOUNDS_POSITION_LEFT), null)
- .computeSafeInsets(displayHeight, displayWidth)
- .getDisplayCutout(), dc.getDisplayInfo().displayCutout);
- }
+ // ----o---------- -------------
+ // | | | | |
+ // | ------o | o---
+ // | | | |
+ // | | -> | |
+ // | | ---o
+ // | | |
+ // | | -------------
+ final Rect r = new Rect(top, left, bottom, right);
+ assertEquals(new WmDisplayCutout(
+ fromBoundingRect(r.left, r.top, r.right, r.bottom, BOUNDS_POSITION_LEFT), null)
+ .computeSafeInsets(displayHeight, displayWidth).getDisplayCutout(),
+ dc.getDisplayInfo().displayCutout);
}
@Test
public void testLayoutSeq_assignedDuringLayout() {
- synchronized (mWm.getWindowManagerLock()) {
+ final DisplayContent dc = createNewDisplay();
+ final WindowState win = createWindow(null /* parent */, TYPE_BASE_APPLICATION, dc, "w");
- final DisplayContent dc = createNewDisplay();
- final WindowState win = createWindow(null /* parent */, TYPE_BASE_APPLICATION, dc, "w");
+ dc.setLayoutNeeded();
+ dc.performLayout(true /* initial */, false /* updateImeWindows */);
- dc.setLayoutNeeded();
- dc.performLayout(true /* initial */, false /* updateImeWindows */);
-
- assertThat(win.mLayoutSeq, is(dc.mLayoutSeq));
- }
+ assertThat(win.mLayoutSeq, is(dc.mLayoutSeq));
}
@Test
@@ -751,7 +743,7 @@
win.setHasSurface(true);
dc.updateSystemGestureExclusion();
- final MutableBoolean invoked = new MutableBoolean(false);
+ final boolean[] invoked = { false };
final ISystemGestureExclusionListener.Stub verifier =
new ISystemGestureExclusionListener.Stub() {
@Override
@@ -760,7 +752,7 @@
Region expected = Region.obtain();
expected.set(10, 20, 30, 40);
assertEquals(expected, actual);
- invoked.value = true;
+ invoked[0] = true;
}
};
try {
@@ -768,7 +760,7 @@
} finally {
dc.unregisterSystemGestureExclusionListener(verifier);
}
- assertTrue("SystemGestureExclusionListener was not invoked", invoked.value);
+ assertTrue("SystemGestureExclusionListener was not invoked", invoked[0]);
}
@Test
@@ -826,30 +818,28 @@
@Test
public void testCalculateSystemGestureExclusion_immersiveStickyLegacyWindow() throws Exception {
- synchronized (mWm.mGlobalLock) {
- mWm.mSystemGestureExcludedByPreQStickyImmersive = true;
+ mWm.mSystemGestureExcludedByPreQStickyImmersive = true;
- final DisplayContent dc = createNewDisplay();
- final WindowState win = createWindow(null, TYPE_BASE_APPLICATION, dc, "win");
- win.getAttrs().flags |= FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR;
- win.getAttrs().layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
- win.getAttrs().privateFlags |= PRIVATE_FLAG_NO_MOVE_ANIMATION;
- win.getAttrs().subtreeSystemUiVisibility = win.mSystemUiVisibility =
- SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION
- | SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
- win.mAppToken.mTargetSdk = P;
+ final DisplayContent dc = createNewDisplay();
+ final WindowState win = createWindow(null, TYPE_BASE_APPLICATION, dc, "win");
+ win.getAttrs().flags |= FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR;
+ win.getAttrs().layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+ win.getAttrs().privateFlags |= PRIVATE_FLAG_NO_MOVE_ANIMATION;
+ win.getAttrs().subtreeSystemUiVisibility = win.mSystemUiVisibility =
+ SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+ win.mAppToken.mTargetSdk = P;
- dc.setLayoutNeeded();
- dc.performLayout(true /* initial */, false /* updateImeWindows */);
+ dc.setLayoutNeeded();
+ dc.performLayout(true /* initial */, false /* updateImeWindows */);
- win.setHasSurface(true);
+ win.setHasSurface(true);
- final Region expected = Region.obtain();
- expected.set(dc.getBounds());
- assertEquals(expected, calculateSystemGestureExclusion(dc));
+ final Region expected = Region.obtain();
+ expected.set(dc.getBounds());
+ assertEquals(expected, calculateSystemGestureExclusion(dc));
- win.setHasSurface(false);
- }
+ win.setHasSurface(false);
}
@Test
@@ -860,7 +850,7 @@
Configuration newConfig = new Configuration();
newConfig.orientation = Configuration.ORIENTATION_PORTRAIT;
- final DisplayContent displayContent = spy(createNewDisplay());
+ final DisplayContent displayContent = createNewDisplay();
Mockito.doReturn(mockLogger).when(displayContent).getMetricsLogger();
Mockito.doReturn(oldConfig).doReturn(newConfig).when(displayContent).getConfiguration();
@@ -886,9 +876,7 @@
}
private void updateFocusedWindow() {
- synchronized (mWm.mGlobalLock) {
- mWm.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, false);
- }
+ mWm.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, false /* updateInputWindows */);
}
/**
@@ -896,7 +884,7 @@
* the values set by test.
*/
private DisplayContent createDisplayNoUpdateDisplayInfo() {
- final DisplayContent displayContent = spy(createNewDisplay());
+ final DisplayContent displayContent = createNewDisplay();
doNothing().when(displayContent).updateDisplayInfo();
return displayContent;
}