diff options
14 files changed, 105 insertions, 89 deletions
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index 0c3b270518cf..3999b5addcce 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -2415,7 +2415,7 @@ public class ActivityRecordTests extends WindowTestsBase { activity.removeImmediately(); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testLandscapeSeascapeRotationByApp() { final Task task = new TaskBuilder(mSupervisor) @@ -2448,14 +2448,14 @@ public class ActivityRecordTests extends WindowTestsBase { appWindow.removeImmediately(); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testLandscapeSeascapeRotationByPolicy() { final Task task = new TaskBuilder(mSupervisor) .setDisplay(mDisplayContent).setCreateActivity(true).build(); final ActivityRecord activity = task.getTopNonFinishingActivity(); - // This instance has been spied in {@link TestDisplayContent}. final DisplayRotation displayRotation = mDisplayContent.getDisplayRotation(); + spyOn(displayRotation); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams( TYPE_BASE_APPLICATION); @@ -2572,7 +2572,6 @@ public class ActivityRecordTests extends WindowTestsBase { mWm.mDisplayFrozen = false; } - @UseTestDisplay @Test public void testRespectTopFullscreenOrientation() { final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build(); @@ -2595,7 +2594,6 @@ public class ActivityRecordTests extends WindowTestsBase { assertEquals(Configuration.ORIENTATION_LANDSCAPE, activityConfig.orientation); } - @UseTestDisplay @Test public void testReportOrientationChange() { final Task task = new TaskBuilder(mSupervisor) @@ -3119,7 +3117,7 @@ public class ActivityRecordTests extends WindowTestsBase { assertFalse(app.mActivityRecord.mImeInsetsFrozenUntilStartInput); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeInsetsFrozenFlag_resetWhenResized() { final WindowState app = createWindow(null, TYPE_APPLICATION, "app"); @@ -3137,7 +3135,7 @@ public class ActivityRecordTests extends WindowTestsBase { assertFalse(app.mActivityRecord.mImeInsetsFrozenUntilStartInput); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeInsetsFrozenFlag_resetWhenNoImeFocusableInActivity() { final WindowState app = createWindow(null, TYPE_APPLICATION, "app"); @@ -3165,7 +3163,7 @@ public class ActivityRecordTests extends WindowTestsBase { assertFalse(app.mActivityRecord.mImeInsetsFrozenUntilStartInput); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeInsetsFrozenFlag_resetWhenReportedToBeImeInputTarget() { final WindowState app = createWindow(null, TYPE_APPLICATION, "app"); @@ -3202,7 +3200,7 @@ public class ActivityRecordTests extends WindowTestsBase { assertEquals(state.getSource(ITYPE_IME).getFrame(), imeSource.getFrame()); } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD}) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) @Test public void testImeInsetsFrozenFlag_noDispatchVisibleInsetsWhenAppNotRequest() throws RemoteException { 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 d6b807fc223e..641a3adf337a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -170,7 +170,7 @@ import java.util.List; @RunWith(WindowTestRunner.class) public class DisplayContentTests extends WindowTestsBase { - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testForAllWindows() { final WindowState exitingAppWindow = createWindow(null, TYPE_BASE_APPLICATION, @@ -203,7 +203,7 @@ public class DisplayContentTests extends WindowTestsBase { assertForAllWindowsOrder(windows); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testForAllWindows_WithAppImeTarget() { final WindowState imeAppTarget = @@ -225,7 +225,7 @@ public class DisplayContentTests extends WindowTestsBase { mNavBarWindow)); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testForAllWindows_WithChildWindowImeTarget() throws Exception { mDisplayContent.setImeLayeringTarget(mChildAppWindowAbove); @@ -243,7 +243,7 @@ public class DisplayContentTests extends WindowTestsBase { mNavBarWindow)); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testForAllWindows_WithStatusBarImeTarget() throws Exception { mDisplayContent.setImeLayeringTarget(mStatusBarWindow); @@ -261,7 +261,7 @@ public class DisplayContentTests extends WindowTestsBase { mNavBarWindow)); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testForAllWindows_WithNotificationShadeImeTarget() throws Exception { mDisplayContent.setImeLayeringTarget(mNotificationShadeWindow); @@ -279,7 +279,7 @@ public class DisplayContentTests extends WindowTestsBase { mNavBarWindow)); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testForAllWindows_WithInBetweenWindowToken() { // This window is set-up to be z-ordered between some windows that go in the same token like @@ -301,7 +301,7 @@ public class DisplayContentTests extends WindowTestsBase { mNavBarWindow)); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testComputeImeTarget() { // Verify that an app window can be an ime target. @@ -321,7 +321,7 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(childWin, imeTarget); } - @UseTestDisplay(addAllCommonWindows = true) + @SetupWindows(addAllCommonWindows = true) @Test public void testComputeImeTarget_startingWindow() { ActivityRecord activity = createActivityRecord(mDisplayContent); @@ -985,7 +985,7 @@ public class DisplayContentTests extends WindowTestsBase { assertFalse(isOptionsPanelAtRight(landscapeDisplay.getDisplayId())); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testInputMethodTargetUpdateWhenSwitchingOnDisplays() { final DisplayContent newDisplay = createNewDisplay(); @@ -1020,7 +1020,7 @@ public class DisplayContentTests extends WindowTestsBase { mDisplayContent.getImeTarget(IME_TARGET_LAYERING)); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testInputMethodSet_listenOnDisplayAreaConfigurationChanged() { spyOn(mAtm); @@ -1159,7 +1159,7 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(dc.getImeContainer().getParentSurfaceControl(), dc.computeImeParent()); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testComputeImeParent_app_notMatchParentBounds() { spyOn(mAppWindow.mActivityRecord); @@ -1178,7 +1178,7 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(dc.getImeContainer().getParentSurfaceControl(), dc.computeImeParent()); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testComputeImeParent_inputTargetNotUpdate() throws Exception { WindowState app1 = createWindow(null, TYPE_BASE_APPLICATION, "app1"); @@ -1193,7 +1193,7 @@ public class DisplayContentTests extends WindowTestsBase { assertNull(mDisplayContent.computeImeParent()); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testComputeImeParent_updateParentWhenTargetNotUseIme() throws Exception { WindowState overlay = createWindow(null, TYPE_APPLICATION_OVERLAY, "overlay"); @@ -1268,7 +1268,7 @@ public class DisplayContentTests extends WindowTestsBase { dc.computeImeControlTarget()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeSecureFlagGetUpdatedAfterImeInputTarget() { // Verify IME window can get up-to-date secure flag update when the IME input target @@ -1282,7 +1282,7 @@ public class DisplayContentTests extends WindowTestsBase { verify(t).setSecure(eq(mDisplayContent.mInputMethodWindow.mSurfaceControl), eq(true)); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testComputeImeControlTarget_notMatchParentBounds() throws Exception { spyOn(mAppWindow.mActivityRecord); @@ -1426,7 +1426,7 @@ public class DisplayContentTests extends WindowTestsBase { win.setHasSurface(false); } - @UseTestDisplay(addWindows = { W_ABOVE_ACTIVITY, W_ACTIVITY}) + @SetupWindows(addWindows = { W_ABOVE_ACTIVITY, W_ACTIVITY }) @Test public void testRequestResizeForEmptyFrames() { final WindowState win = mChildAppWindowAbove; @@ -1501,11 +1501,12 @@ public class DisplayContentTests extends WindowTestsBase { assertNull(displayContent.getAsyncRotationController()); } - @UseTestDisplay(addWindows = { W_ACTIVITY, W_WALLPAPER, W_STATUS_BAR, W_NAVIGATION_BAR, + @SetupWindows(addWindows = { W_ACTIVITY, W_WALLPAPER, W_STATUS_BAR, W_NAVIGATION_BAR, W_INPUT_METHOD, W_NOTIFICATION_SHADE }) @Test public void testApplyTopFixedRotationTransform() { final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); + spyOn(displayPolicy); // Only non-movable (gesture) navigation bar will be animated by fixed rotation animation. doReturn(false).when(displayPolicy).navigationBarCanMove(); displayPolicy.addWindowLw(mStatusBarWindow, mStatusBarWindow.mAttrs); @@ -1624,6 +1625,8 @@ public class DisplayContentTests extends WindowTestsBase { // The display should be rotated after the launch is finished. doReturn(false).when(app).isAnimating(anyInt(), anyInt()); mDisplayContent.mAppTransition.notifyAppTransitionFinishedLocked(app.token); + mStatusBarWindow.finishSeamlessRotation(t); + mNavBarWindow.finishSeamlessRotation(t); // The fixed rotation should be cleared and the new rotation is applied to display. assertFalse(app.hasFixedRotationTransform()); @@ -1655,7 +1658,7 @@ public class DisplayContentTests extends WindowTestsBase { assertFalse(mDisplayContent.hasTopFixedRotationLaunchingApp()); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testRotateSeamlesslyWithFixedRotation() { final DisplayRotation displayRotation = mDisplayContent.getDisplayRotation(); @@ -2081,7 +2084,7 @@ public class DisplayContentTests extends WindowTestsBase { verifySizes(dc, forcedWidth, forcedHeight, forcedDensity); } - @UseTestDisplay(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) @Test public void testComputeImeTarget_shouldNotCheckOutdatedImeTargetLayerWhenRemoved() { final WindowState child1 = createWindow(mAppWindow, FIRST_SUB_WINDOW, "child1"); @@ -2104,7 +2107,7 @@ public class DisplayContentTests extends WindowTestsBase { verify(child1, never()).needsRelativeLayeringToIme(); } - @UseTestDisplay(addWindows = {W_INPUT_METHOD}, addAllCommonWindows = true) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testAttachAndShowImeScreenshotOnTarget() { // Preparation: Simulate screen state is on. @@ -2155,7 +2158,7 @@ public class DisplayContentTests extends WindowTestsBase { assertNotNull(mDisplayContent.mImeScreenshot); } - @UseTestDisplay(addWindows = {W_INPUT_METHOD}, addAllCommonWindows = true) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testShowImeScreenshot() { final Task rootTask = createTask(mDisplayContent); @@ -2181,7 +2184,7 @@ public class DisplayContentTests extends WindowTestsBase { verify(mDisplayContent, never()).showImeScreenshot(); } - @UseTestDisplay(addWindows = {W_INPUT_METHOD}) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testShowImeScreenshot_removeCurSnapshotBeforeCreateNext() { final Task rootTask = createTask(mDisplayContent); @@ -2471,7 +2474,7 @@ public class DisplayContentTests extends WindowTestsBase { ACTIVITY_TYPE_STANDARD)); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeChildWindowFocusWhenImeLayeringTargetChanges() { final WindowState imeChildWindow = @@ -2496,7 +2499,7 @@ public class DisplayContentTests extends WindowTestsBase { assertNotEquals(imeChildWindow, mDisplayContent.findFocusedWindow()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeMenuDialogFocusWhenImeLayeringTargetChanges() { final WindowState imeMenuDialog = diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java index f41fee789bf2..2158cafbb64a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java @@ -36,7 +36,7 @@ import org.junit.runner.RunWith; @SmallTest @Presubmit -@WindowTestsBase.UseTestDisplay( +@WindowTestsBase.SetupWindows( addWindows = { WindowTestsBase.W_STATUS_BAR, WindowTestsBase.W_NAVIGATION_BAR }) @RunWith(WindowTestRunner.class) public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase { diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java index 34575ae2fe46..6bdc2e35a7be 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java @@ -67,7 +67,7 @@ import java.io.StringWriter; */ @SmallTest @Presubmit -@WindowTestsBase.UseTestDisplay( +@WindowTestsBase.SetupWindows( addWindows = { WindowTestsBase.W_STATUS_BAR, WindowTestsBase.W_NAVIGATION_BAR }) @RunWith(WindowTestRunner.class) public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java index 8f2e9b4c6ff6..9cc665bd4cbe 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java @@ -167,7 +167,7 @@ public class DisplayPolicyTests extends WindowTestsBase { dimmingNonImTarget, imeNonDrawNavBar, NAV_BAR_BOTTOM)); } - @UseTestDisplay(addWindows = { W_NAVIGATION_BAR }) + @SetupWindows(addWindows = W_NAVIGATION_BAR) @Test public void testUpdateLightNavigationBarLw() { DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); @@ -204,7 +204,7 @@ public class DisplayPolicyTests extends WindowTestsBase { APPEARANCE_LIGHT_NAVIGATION_BARS, opaqueLightNavBar)); } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_STATUS_BAR}) + @SetupWindows(addWindows = { W_ACTIVITY, W_STATUS_BAR }) @Test public void testComputeTopFullscreenOpaqueWindow() { final WindowManager.LayoutParams attrs = mAppWindow.mAttrs; @@ -292,7 +292,7 @@ public class DisplayPolicyTests extends WindowTestsBase { return win; } - @UseTestDisplay(addWindows = { W_NAVIGATION_BAR, W_INPUT_METHOD }) + @SetupWindows(addWindows = { W_NAVIGATION_BAR, W_INPUT_METHOD }) @Test public void testImeMinimalSourceFrame() { final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); @@ -328,7 +328,7 @@ public class DisplayPolicyTests extends WindowTestsBase { assertTrue(imeSource.getFrame().contains(navBarSource.getFrame())); } - @UseTestDisplay(addWindows = { W_NAVIGATION_BAR }) + @SetupWindows(addWindows = W_NAVIGATION_BAR) @Test public void testInsetsGivenContentFrame() { final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java index d3282b97a6b8..041f298d4aa2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java @@ -253,7 +253,7 @@ public class InsetsPolicyTest extends WindowTestsBase { assertEquals(ITYPE_NAVIGATION_BAR, panelControls[0].getType()); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testShowTransientBars_bothCanBeTransient_appGetsBothFakeControls() { final WindowState statusBar = addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar"); @@ -295,7 +295,7 @@ public class InsetsPolicyTest extends WindowTestsBase { .getSource(ITYPE_NAVIGATION_BAR).isVisible()); } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testShowTransientBars_statusBarCanBeTransient_appGetsStatusBarFakeControl() { addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") @@ -325,7 +325,7 @@ public class InsetsPolicyTest extends WindowTestsBase { } } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testAbortTransientBars_bothCanBeAborted_appGetsBothRealControls() { final InsetsSource statusBarSource = addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java index 6c161cf088f7..fe14d8e02592 100644 --- a/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java @@ -131,7 +131,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { assertNull(app.getInsetsState().peekSource(ITYPE_NAVIGATION_BAR)); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testStripForDispatch_independentSources() { getController().getSourceProvider(ITYPE_IME).setWindowContainer(mImeWindow, null, null); @@ -148,7 +148,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { .isVisible()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testStripForDispatch_belowIme() { getController().getSourceProvider(ITYPE_IME).setWindowContainer(mImeWindow, null, null); @@ -161,7 +161,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { assertTrue(app.getInsetsState().getSource(ITYPE_IME).isVisible()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testStripForDispatch_aboveIme() { getController().getSourceProvider(ITYPE_IME).setWindowContainer(mImeWindow, null, null); @@ -173,7 +173,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { .isVisible()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testStripForDispatch_imeOrderChanged() { // This can be the IME z-order target while app cannot be the IME z-order target. @@ -228,7 +228,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { assertTrue(app.getInsetsState().getSource(ITYPE_IME).isVisible()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testStripForDispatch_childWindow_altFocusable() { getController().getSourceProvider(ITYPE_IME).setWindowContainer(mImeWindow, null, null); @@ -249,7 +249,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { .isVisible()); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testStripForDispatch_childWindow_splitScreen() { getController().getSourceProvider(ITYPE_IME).setWindowContainer(mImeWindow, null, null); @@ -456,7 +456,7 @@ public class InsetsStateControllerTest extends WindowTestsBase { assertNotNull(app.getInsetsState().peekSource(ITYPE_NAVIGATION_BAR)); } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testGetInsetsHintForNewControl() { final WindowState app1 = createTestWindow("app1"); diff --git a/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java index 027f5218f820..c548dc3aebd5 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java @@ -749,7 +749,7 @@ public class RemoteAnimationControllerTest extends WindowTestsBase { } } - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testLaunchRemoteAnimationWithoutImeBehind() { final WindowState win1 = createWindow(null /* parent */, TYPE_BASE_APPLICATION, "testWin1"); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java index e4336843a35b..06a176f83985 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java @@ -190,7 +190,7 @@ public class TaskSnapshotControllerTest extends WindowTestsBase { } } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD}) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) @Test public void testCreateTaskSnapshotWithExcludingIme() { Task task = mAppWindow.mActivityRecord.getTask(); @@ -209,7 +209,7 @@ public class TaskSnapshotControllerTest extends WindowTestsBase { } } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD}) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) @Test public void testCreateTaskSnapshotWithIncludingIme() { Task task = mAppWindow.mActivityRecord.getTask(); @@ -237,7 +237,7 @@ public class TaskSnapshotControllerTest extends WindowTestsBase { } } - @UseTestDisplay(addWindows = W_ACTIVITY) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testPrepareTaskSnapshot() { mAppWindow.mWinAnimator.mLastAlpha = 1f; diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java index 64959f240887..593e983f3d23 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java @@ -45,7 +45,7 @@ import java.util.function.Consumer; @RunWith(WindowTestRunner.class) public class WindowContainerTraversalTests extends WindowTestsBase { - @UseTestDisplay(addWindows = { W_DOCK_DIVIDER, W_INPUT_METHOD }) + @SetupWindows(addWindows = { W_DOCK_DIVIDER, W_INPUT_METHOD }) @Test public void testDockedDividerPosition() { final WindowState splitScreenWindow = createWindow(null, diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java index 84c2c551de85..969353216d20 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java @@ -810,7 +810,6 @@ public class WindowOrganizerTests extends WindowTestsBase { assertThat(navigationBarInsetsReceiverTask.mLocalInsetsSourceProviders.size()).isEqualTo(0); } - @UseTestDisplay @Test public void testTaskInfoCallback() { final ArrayList<RunningTaskInfo> lastReportedTiles = new ArrayList<>(); @@ -842,8 +841,7 @@ public class WindowOrganizerTests extends WindowTestsBase { lastReportedTiles.clear(); called[0] = false; - final Task rootTask2 = createTask( - mDisplayContent, WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME); + final Task rootTask2 = mDisplayContent.getDefaultTaskDisplayArea().getRootHomeTask(); wct = new WindowContainerTransaction(); wct.reparent(rootTask2.mRemoteToken.toWindowContainerToken(), info1.token, true /* onTop */); @@ -869,7 +867,6 @@ public class WindowOrganizerTests extends WindowTestsBase { assertEquals(ACTIVITY_TYPE_UNDEFINED, lastReportedTiles.get(0).topActivityType); } - @UseTestDisplay @Test public void testHierarchyTransaction() { final ArrayMap<IBinder, RunningTaskInfo> lastReportedTiles = new ArrayMap<>(); @@ -890,23 +887,22 @@ public class WindowOrganizerTests extends WindowTestsBase { // Ensure events dispatch to organizer. mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents(); + // 2 + 1 (home) = 3 final int initialRootTaskCount = mWm.mAtmService.mTaskOrganizerController.getRootTasks( mDisplayContent.mDisplayId, null /* activityTypes */).size(); - final Task rootTask = createTask( mDisplayContent, WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD); - final Task rootTask2 = createTask( - mDisplayContent, WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME); // Check getRootTasks works List<RunningTaskInfo> roots = mWm.mAtmService.mTaskOrganizerController.getRootTasks( mDisplayContent.mDisplayId, null /* activityTypes */); - assertEquals(initialRootTaskCount + 2, roots.size()); + assertEquals(initialRootTaskCount + 1, roots.size()); lastReportedTiles.clear(); WindowContainerTransaction wct = new WindowContainerTransaction(); wct.reparent(rootTask.mRemoteToken.toWindowContainerToken(), info1.token, true /* onTop */); + final Task rootTask2 = mDisplayContent.getDefaultTaskDisplayArea().getRootHomeTask(); wct.reparent(rootTask2.mRemoteToken.toWindowContainerToken(), info2.token, true /* onTop */); mWm.mAtmService.mWindowOrganizerController.applyTransaction(wct); @@ -940,7 +936,8 @@ public class WindowOrganizerTests extends WindowTestsBase { // Check that getRootTasks doesn't include children of tiles roots = mWm.mAtmService.mTaskOrganizerController.getRootTasks(mDisplayContent.mDisplayId, null /* activityTypes */); - assertEquals(initialRootTaskCount, roots.size()); + // Home (rootTask2) was moved into task1, so only remain 2 roots: task1 and task2. + assertEquals(initialRootTaskCount - 1, roots.size()); lastReportedTiles.clear(); wct = new WindowContainerTransaction(); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index 638ca05b8dea..5c7b882f8dab 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -418,7 +418,7 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(app.canAffectSystemUiFlags()); } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_STATUS_BAR}) + @SetupWindows(addWindows = { W_ACTIVITY, W_STATUS_BAR }) @Test public void testVisibleWithInsetsProvider() { final WindowState statusBar = mStatusBarWindow; @@ -694,7 +694,7 @@ public class WindowStateTests extends WindowTestsBase { verify(t).setMatrix(child2.mSurfaceControl, w.mInvGlobalScale, 0, 0, w.mInvGlobalScale); } - @UseTestDisplay(addWindows = {W_ABOVE_ACTIVITY, W_NOTIFICATION_SHADE}) + @SetupWindows(addWindows = { W_ABOVE_ACTIVITY, W_NOTIFICATION_SHADE }) @Test public void testRequestDrawIfNeeded() { final WindowState startingApp = createWindow(null /* parent */, @@ -739,7 +739,7 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(startingApp.getOrientationChanging()); } - @UseTestDisplay(addWindows = W_ABOVE_ACTIVITY) + @SetupWindows(addWindows = W_ABOVE_ACTIVITY) @Test public void testReportResizedWithRemoteException() { final WindowState win = mChildAppWindowAbove; @@ -769,7 +769,7 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(win.getOrientationChanging()); } - @UseTestDisplay(addWindows = W_ABOVE_ACTIVITY) + @SetupWindows(addWindows = W_ABOVE_ACTIVITY) @Test public void testRequestResizeForBlastSync() { final WindowState win = mChildAppWindowAbove; @@ -907,7 +907,7 @@ public class WindowStateTests extends WindowTestsBase { assertTrue(mAtm.mActiveUids.hasNonAppVisibleWindow(uid)); } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD}) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) @Test public void testNeedsRelativeLayeringToIme_notAttached() { WindowState sameTokenWindow = createWindow(null, TYPE_BASE_APPLICATION, mAppWindow.mToken, @@ -920,7 +920,7 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(sameTokenWindow.needsRelativeLayeringToIme()); } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD}) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD }) @Test public void testNeedsRelativeLayeringToIme_startingWindow() { WindowState sameTokenWindow = createWindow(null, TYPE_APPLICATION_STARTING, @@ -963,7 +963,7 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(overlay.getWindowFrames().hasInsetsChanged()); } - @UseTestDisplay(addWindows = {W_INPUT_METHOD, W_ACTIVITY}) + @SetupWindows(addWindows = { W_INPUT_METHOD, W_ACTIVITY }) @Test public void testImeAlwaysReceivesVisibleNavigationBarInsets() { final InsetsSource navSource = new InsetsSource(ITYPE_NAVIGATION_BAR); @@ -1053,7 +1053,7 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(app2.getInsetsState().getSource(ITYPE_IME).isVisible()); } - @UseTestDisplay(addWindows = {W_ACTIVITY}) + @SetupWindows(addWindows = W_ACTIVITY) @Test public void testUpdateImeControlTargetWhenLeavingMultiWindow() { WindowState app = createWindow(null, TYPE_BASE_APPLICATION, @@ -1079,7 +1079,7 @@ public class WindowStateTests extends WindowTestsBase { assertEquals(mAppWindow, mDisplayContent.getImeTarget(IME_TARGET_CONTROL).getWindow()); } - @UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD, W_NOTIFICATION_SHADE}) + @SetupWindows(addWindows = { W_ACTIVITY, W_INPUT_METHOD, W_NOTIFICATION_SHADE }) @Test public void testNotificationShadeHasImeInsetsWhenMultiWindow() { WindowState app = createWindow(null, TYPE_BASE_APPLICATION, diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index 0cbf1b2c7cc8..3bc9dcc22dab 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -110,6 +110,7 @@ import org.junit.BeforeClass; import org.junit.runner.Description; import org.mockito.Mockito; +import java.lang.annotation.Annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -151,7 +152,8 @@ class WindowTestsBase extends SystemServiceTestsBase { */ DisplayContent mDisplayContent; - // The following fields are only available depending on the usage of annotation UseTestDisplay. + // The following fields are only available depending on the usage of annotation UseTestDisplay + // and UseCommonWindows. WindowState mWallpaperWindow; WindowState mImeWindow; WindowState mImeDialogWindow; @@ -214,14 +216,15 @@ class WindowTestsBase extends SystemServiceTestsBase { // Only create an additional test display for annotated test class/method because it may // significantly increase the execution time. final Description description = mSystemServicesTestRule.getDescription(); - UseTestDisplay testDisplayAnnotation = description.getAnnotation(UseTestDisplay.class); - if (testDisplayAnnotation == null) { - testDisplayAnnotation = description.getTestClass().getAnnotation(UseTestDisplay.class); - } - if (testDisplayAnnotation != null) { - createTestDisplay(testDisplayAnnotation); + final UseTestDisplay useTestDisplay = getAnnotation(description, UseTestDisplay.class); + if (useTestDisplay != null) { + createTestDisplay(useTestDisplay); } else { mDisplayContent = mDefaultDisplay; + final SetupWindows setupWindows = getAnnotation(description, SetupWindows.class); + if (setupWindows != null) { + addCommonWindows(setupWindows.addAllCommonWindows(), setupWindows.addWindows()); + } } // Ensure letterbox aspect ratio is not overridden on any device target. @@ -290,10 +293,15 @@ class WindowTestsBase extends SystemServiceTestsBase { private void createTestDisplay(UseTestDisplay annotation) { beforeCreateTestDisplay(); mDisplayContent = createNewDisplayWithImeSupport(DISPLAY_IME_POLICY_LOCAL); + addCommonWindows(annotation.addAllCommonWindows(), annotation.addWindows()); + mDisplayContent.getInsetsPolicy().setRemoteInsetsControllerControlsSystemBars(false); - final boolean addAll = annotation.addAllCommonWindows(); - final @CommonTypes int[] requestedWindows = annotation.addWindows(); + // Adding a display will cause freezing the display. Make sure to wait until it's + // unfrozen to not run into race conditions with the tests. + waitUntilHandlersIdle(); + } + private void addCommonWindows(boolean addAll, @CommonTypes int[] requestedWindows) { if (addAll || ArrayUtils.contains(requestedWindows, W_WALLPAPER)) { mWallpaperWindow = createCommonWindow(null, TYPE_WALLPAPER, "wallpaperWindow"); } @@ -346,12 +354,6 @@ class WindowTestsBase extends SystemServiceTestsBase { mChildAppWindowBelow = createCommonWindow(mAppWindow, TYPE_APPLICATION_MEDIA_OVERLAY, "mChildAppWindowBelow"); } - - mDisplayContent.getInsetsPolicy().setRemoteInsetsControllerControlsSystemBars(false); - - // Adding a display will cause freezing the display. Make sure to wait until it's - // unfrozen to not run into race conditions with the tests. - waitUntilHandlersIdle(); } private WindowManager.LayoutParams getNavBarLayoutParamsForRotation(int rotation) { @@ -877,11 +879,21 @@ class WindowTestsBase extends SystemServiceTestsBase { } /** + * The annotation to provide common windows on default display. This is mutually exclusive + * with {@link UseTestDisplay}. + */ + @Target({ ElementType.METHOD, ElementType.TYPE }) + @Retention(RetentionPolicy.RUNTIME) + @interface SetupWindows { + boolean addAllCommonWindows() default false; + @CommonTypes int[] addWindows() default {}; + } + + /** * The annotation for class and method (higher priority) to create a non-default display that * will be assigned to {@link #mDisplayContent}. It is used if the test needs * <ul> * <li>Pure empty display.</li> - * <li>Configured common windows.</li> * <li>Independent and customizable orientation.</li> * <li>Cross display operation.</li> * </ul> @@ -896,6 +908,12 @@ class WindowTestsBase extends SystemServiceTestsBase { @CommonTypes int[] addWindows() default {}; } + static <T extends Annotation> T getAnnotation(Description desc, Class<T> type) { + final T annotation = desc.getAnnotation(type); + if (annotation != null) return annotation; + return desc.getTestClass().getAnnotation(type); + } + /** Creates and adds a {@link TestDisplayContent} to supervisor at the given position. */ TestDisplayContent addNewDisplayContentAt(int position) { return new TestDisplayContent.Builder(mAtm, 1000, 1500).setPosition(position).build(); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java index 4b5f330a2ddc..3ff791b650ca 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java @@ -258,7 +258,7 @@ public class WindowTokenTests extends WindowTestsBase { * states for its children windows and by default it shouldn't let IME window setting * the frozen insets state even the window of the window token is the IME layering target. */ - @UseTestDisplay(addWindows = W_INPUT_METHOD) + @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testSetInsetsFrozen_notAffectImeWindowState() { // Pre-condition: make the IME window be controlled by IME insets provider. |