DO NOT MERGE ANYWHERE Use DisplayId when verifying top task in MulitDisplay MultiDisplay does not always use a specific DisplayId when verifying top task which can lead to incorrect verification as they can differ of course. Test: atest CtsWindowManagerDeviceTestCases:android.server.wm.MultiDisplayClientTests Test: atest CtsWindowManagerDeviceTestCases:android.server.wm.MultiDisplayActivityLaunchTests Flag: TEST_ONLY Bug: 368604141 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:0aea63219254b79fa52f28bd13de930ec3ebd47e) Change-Id: I3579d00775e62484cea51768a5d7e85b763c553c
diff --git a/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java b/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java index 40ef1ca..af629c0 100644 --- a/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java +++ b/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
@@ -1316,10 +1316,11 @@ public void waitAndAssertTopResumedActivity(ComponentName activityName, int displayId, String message) { final String activityClassName = getActivityName(activityName); - mWmState.waitForWithAmState(state -> activityClassName.equals(state.getFocusedActivity()), + mWmState.waitForWithAmState(state -> + activityClassName.equals(state.getFocusedActivityOnDisplay(displayId)), "activity to be on top"); waitAndAssertResumedActivity(activityName, "Activity must be resumed"); - mWmState.assertFocusedActivity(message, activityName); + mWmState.assertFocusedActivityOnDisplay(message, activityName, displayId); final int frontRootTaskId = mWmState.getFrontRootTaskId(displayId); Task frontRootTaskOnDisplay = mWmState.getRootTask(frontRootTaskId); @@ -1328,8 +1329,8 @@ activityClassName, frontRootTaskOnDisplay.isLeafTask() ? frontRootTaskOnDisplay.mResumedActivity : frontRootTaskOnDisplay.getTopTask().mResumedActivity); - mWmState.assertFocusedRootTask("Top activity's rootTask must also be on top", - frontRootTaskId); + mWmState.assertFocusedRootTaskOnDisplay("Top activity's rootTask must also be on top", + frontRootTaskId, displayId); } /**
diff --git a/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerState.java b/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerState.java index a3de70e..cbf4eec 100644 --- a/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerState.java +++ b/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerState.java
@@ -489,6 +489,10 @@ mWindowFramesValid = false; } + public String getFocusedAppOnDisplay(int displayId) { + return getDisplay(displayId).mFocusedApp; + } + public String getFocusedApp() { return mFocusedApp; } @@ -599,6 +603,10 @@ return null; } + int getFocusedTaskIdOnDisplay(int displayId) { + return getDisplay(displayId).mFocusedRootTaskId; + } + public int getFocusedTaskId() { return mTopFocusedTaskId; } @@ -613,6 +621,10 @@ return rootTask != null ? rootTask.getWindowingMode() : WINDOWING_MODE_UNDEFINED; } + public String getFocusedActivityOnDisplay(int displayId) { + return getDisplay(displayId).mResumedActivity; + } + public String getFocusedActivity() { return mTopResumedActivityRecord; }
diff --git a/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java b/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java index ddd9d27..8823e71 100644 --- a/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java +++ b/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java
@@ -680,6 +680,10 @@ assertFrontStackActivityTypeOnDisplay(msg, activityType, DEFAULT_DISPLAY); } + void assertFocusedRootTaskOnDisplay(String msg, int taskId, int displayId) { + assertEquals(msg, taskId, getFocusedTaskIdOnDisplay(displayId)); + } + public void assertFocusedRootTask(String msg, int taskId) { assertEquals(msg, taskId, getFocusedTaskId()); } @@ -693,6 +697,13 @@ } } + public void assertFocusedActivityOnDisplay(final String msg, final ComponentName activityName, + final int displayId) { + final String activityComponentName = getActivityName(activityName); + assertEquals(msg, activityComponentName, getFocusedActivityOnDisplay(displayId)); + assertEquals(msg, activityComponentName, getFocusedAppOnDisplay(displayId)); + } + public void assertFocusedActivity(final String msg, final ComponentName activityName) { final String activityComponentName = getActivityName(activityName); assertEquals(msg, activityComponentName, getFocusedActivity());