Use non-singleton looper for activity task manager tests

The handler thread for testing will quit after each test method.
It should prevent the delayed messages from affecting other
subsequent tests.

Test: atest ActivityStackTests

Change-Id: I56bad6ad8d6e9e769e3a5d96e9d5ff70c99d344a
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index b62f648..e3ea6c8 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -328,6 +328,7 @@
 import com.android.server.AppOpsService;
 import com.android.server.AttributeCache;
 import com.android.server.DeviceIdleController;
+import com.android.server.DisplayThread;
 import com.android.server.IntentResolver;
 import com.android.server.IoThread;
 import com.android.server.LocalServices;
@@ -2262,7 +2263,8 @@
         mIntentFirewall = new IntentFirewall(new IntentFirewallInterface(), mHandler);
 
         mActivityTaskManager = atm;
-        mActivityTaskManager.setActivityManagerService(mIntentFirewall, mPendingIntentController);
+        mActivityTaskManager.initialize(mIntentFirewall, mPendingIntentController,
+                DisplayThread.get().getLooper());
         mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
 
         mProcessCpuThread = new Thread("CpuTracker") {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 8f99dae..6889239 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -190,6 +190,7 @@
 import android.os.IBinder;
 import android.os.IUserManager;
 import android.os.LocaleList;
+import android.os.Looper;
 import android.os.Message;
 import android.os.PersistableBundle;
 import android.os.PowerManager;
@@ -246,7 +247,6 @@
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.AppOpsService;
 import com.android.server.AttributeCache;
-import com.android.server.DisplayThread;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
 import com.android.server.SystemServiceManager;
@@ -753,9 +753,9 @@
         return mGlobalLock;
     }
 
-    public void setActivityManagerService(IntentFirewall intentFirewall,
-            PendingIntentController intentController) {
-        mH = new H();
+    public void initialize(IntentFirewall intentFirewall, PendingIntentController intentController,
+            Looper looper) {
+        mH = new H(looper);
         mUiHandler = new UiHandler();
         mIntentFirewall = intentFirewall;
         final File systemDir = SystemServiceManager.ensureSystemDir();
@@ -5576,8 +5576,8 @@
         static final int FIRST_ACTIVITY_STACK_MSG = 100;
         static final int FIRST_SUPERVISOR_STACK_MSG = 200;
 
-        public H() {
-            super(DisplayThread.get().getLooper());
+        H(Looper looper) {
+            super(looper);
         }
 
         @Override
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
index ead9731..3a56419 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
@@ -34,7 +34,6 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
 import static com.android.server.wm.ActivityStack.REMOVE_TASK_MODE_DESTROYING;
 import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
@@ -403,11 +402,10 @@
             doReturn(true).when(this).isBackgroundActivityStartsEnabled();
         }
 
-        void setActivityManagerService(IntentFirewall intentFirewall,
-                PendingIntentController intentController, ActivityManagerInternal amInternal,
-                WindowManagerService wm) {
+        void setup(IntentFirewall intentFirewall, PendingIntentController intentController,
+                ActivityManagerInternal amInternal, WindowManagerService wm, Looper looper) {
             mAmInternal = amInternal;
-            setActivityManagerService(intentFirewall, intentController);
+            initialize(intentFirewall, intentController, looper);
             initRootActivityContainerMocks(wm);
             setWindowManager(wm);
         }
@@ -517,8 +515,8 @@
             mWindowManager = prepareMockWindowManager();
             mUgmInternal = mock(UriGrantsManagerInternal.class);
 
-            atm.setActivityManagerService(mIntentFirewall, mPendingIntentController,
-                    new LocalService(), mWindowManager);
+            atm.setup(mIntentFirewall, mPendingIntentController, new LocalService(), mWindowManager,
+                    testInjector.mHandlerThread.getLooper());
 
             mActivityTaskManager = atm;
             mAtmInternal = atm.mInternal;