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