Add test for updating pre-Q top resumed activity when display moved
Make sure the pre-Q non-top activity was resumed and brought to top
when tap on it to switch focus.
Bug: 123761773
Test: atest MultiDisplayPolicyTests
Change-Id: Ib10f890c403fa67d5854c4e51100b592412bd93b
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java b/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java
index 0d61322..1f1038c 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java
@@ -839,4 +839,28 @@
mAmWmState.getAmState().getResumedActivitiesCountInPackage(
SDK_27_TEST_ACTIVITY.getPackageName()));
}
+
+ @Test
+ public void testPreQTopProcessResumedDisplayMoved() throws Exception {
+ final ActivityDisplay newDisplay = createManagedVirtualDisplaySession()
+ .setSimulateDisplay(true).createDisplay();
+ getLaunchActivityBuilder().setUseInstrumentation()
+ .setTargetActivity(SDK_27_LAUNCHING_ACTIVITY).setNewTask(true)
+ .setDisplayId(DEFAULT_DISPLAY).execute();
+ waitAndAssertTopResumedActivity(SDK_27_LAUNCHING_ACTIVITY, DEFAULT_DISPLAY,
+ "Activity launched on default display must be resumed and focused");
+
+ getLaunchActivityBuilder().setUseInstrumentation()
+ .setTargetActivity(SDK_27_TEST_ACTIVITY).setNewTask(true)
+ .setDisplayId(newDisplay.mId).execute();
+ waitAndAssertTopResumedActivity(SDK_27_TEST_ACTIVITY, newDisplay.mId,
+ "Activity launched on secondary display must be resumed and focused");
+
+ tapOnDisplayCenter(DEFAULT_DISPLAY);
+ waitAndAssertTopResumedActivity(SDK_27_LAUNCHING_ACTIVITY, DEFAULT_DISPLAY,
+ "Activity launched on default display must be resumed and focused");
+ assertEquals("There must be only one resumed activity in the package.", 1,
+ mAmWmState.getAmState().getResumedActivitiesCountInPackage(
+ SDK_27_LAUNCHING_ACTIVITY.getPackageName()));
+ }
}