diff --git a/services/core/java/com/android/server/am/UidObserverController.java b/services/core/java/com/android/server/am/UidObserverController.java index c1bfe25618b20..f6a184119bb44 100644 --- a/services/core/java/com/android/server/am/UidObserverController.java +++ b/services/core/java/com/android/server/am/UidObserverController.java @@ -129,6 +129,10 @@ public class UidObserverController { return mValidateUids; } + Runnable getDispatchRunnableForTest() { + return mDispatchRunnable; + } + @VisibleForTesting static int mergeWithPendingChange(int currentChange, int pendingChange) { // If there is no change in idle or active state, then keep whatever was pending. diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java index 12e0d8bc5d626..f4a83c3c5a237 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java @@ -98,6 +98,7 @@ import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; @@ -164,6 +165,8 @@ public class ActivityManagerServiceTest { mAms.mWaitForNetworkTimeoutMs = 2000; mAms.mActivityTaskManager = new ActivityTaskManagerService(mContext); mAms.mActivityTaskManager.initialize(null, null, mHandler.getLooper()); + mHandler.setRunnablesToIgnore( + List.of(mAms.mUidObserverController.getDispatchRunnableForTest())); } private void mockNoteOperation() { @@ -983,12 +986,21 @@ public class ActivityManagerServiceTest { private static final long WAIT_FOR_MSG_TIMEOUT_MS = 4000; // 4 sec private static final long WAIT_FOR_MSG_INTERVAL_MS = 400; // 0.4 sec - private Set mMsgsHandled = new HashSet<>(); + private final Set mMsgsHandled = new HashSet<>(); + private final List mRunnablesToIgnore = new ArrayList<>(); TestHandler(Looper looper) { super(looper); } + @Override + public void dispatchMessage(Message msg) { + if (msg.getCallback() != null && mRunnablesToIgnore.contains(msg.getCallback())) { + return; + } + super.dispatchMessage(msg); + } + @Override public void handleMessage(Message msg) { mMsgsHandled.add(msg.what); @@ -1004,6 +1016,11 @@ public class ActivityManagerServiceTest { } } + public void setRunnablesToIgnore(List runnables) { + mRunnablesToIgnore.clear(); + mRunnablesToIgnore.addAll(runnables); + } + public void reset() { mMsgsHandled.clear(); }