From a1d07a8c4fbfe2c9dd42267b9a93f710e17dd03a Mon Sep 17 00:00:00 2001 From: Antonella Dellanzo Date: Wed, 21 Oct 2020 14:13:44 +0200 Subject: [PATCH] Fix NavBar & StatusBar layer always visible assertion When phone rotates, the status bar and navigation bar layers hide and then become visible again. The navBarLayerIsAlwaysVisible and statusBarLayerIsAlwaysVisible where only checking that the layer was always being shown. As part of the current behaviour, if the screen rotates, we need to check that the layer behaves this way: shows, hide, shows. Besides adding the new behaviour in the assertions, we are enabling again this assertions for some tests that had it disabled as part of the bug (OpenAppCold, OpenAppWarm, CloseImeAutoOpenWindow and CloseImeWindowToHome). Test: atest FlickerTests:OpenAppColdTest FlickerTests:OpenAppWarmTest FlickerTests:CloseImeAutoOpenWindowToHomeTest FlickerTests:CloseImeWindowToHomeTest Bug: b/140855415 Change-Id: I60a331a4a1242ef84acf93e2738bd9f4f92d51c5 --- .../server/wm/flicker/CommonAssertions.kt | 30 ++++++++++++++++--- .../ime/CloseImeAutoOpenWindowToHomeTest.kt | 8 +++-- .../flicker/ime/CloseImeWindowToHomeTest.kt | 6 ++-- .../wm/flicker/launch/OpenAppColdTest.kt | 9 ++++-- .../wm/flicker/launch/OpenAppWarmTest.kt | 9 ++++-- 5 files changed, 47 insertions(+), 15 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt index 8457039e03994..58b3992b22448 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt @@ -77,21 +77,43 @@ fun LayersAssertion.noUncoveredRegions( @JvmOverloads fun LayersAssertion.navBarLayerIsAlwaysVisible( + rotatesScreen: Boolean = false, bugId: Int = 0, enabled: Boolean = bugId == 0 ) { - all("navBarLayerIsAlwaysVisible", enabled, bugId) { - this.showsLayer(NAVIGATION_BAR_WINDOW_TITLE) + if (rotatesScreen) { + all("navBarLayerIsAlwaysVisible", enabled, bugId) { + this.showsLayer(NAVIGATION_BAR_WINDOW_TITLE) + .then() + .hidesLayer(NAVIGATION_BAR_WINDOW_TITLE) + .then() + .showsLayer(NAVIGATION_BAR_WINDOW_TITLE) + } + } else { + all("navBarLayerIsAlwaysVisible", enabled, bugId) { + this.showsLayer(NAVIGATION_BAR_WINDOW_TITLE) + } } } @JvmOverloads fun LayersAssertion.statusBarLayerIsAlwaysVisible( + rotatesScreen: Boolean = false, bugId: Int = 0, enabled: Boolean = bugId == 0 ) { - all("statusBarLayerIsAlwaysVisible", enabled, bugId) { - this.showsLayer(STATUS_BAR_WINDOW_TITLE) + if (rotatesScreen) { + all("statusBarLayerIsAlwaysVisible", enabled, bugId) { + this.showsLayer(STATUS_BAR_WINDOW_TITLE) + .then() + hidesLayer(STATUS_BAR_WINDOW_TITLE) + .then() + .showsLayer(STATUS_BAR_WINDOW_TITLE) + } + } else { + all("statusBarLayerIsAlwaysVisible", enabled, bugId) { + this.showsLayer(STATUS_BAR_WINDOW_TITLE) + } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt index 76478025ee631..9924931431796 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt @@ -43,7 +43,7 @@ import org.junit.runners.Parameterized /** * Test IME window closing back to app window transitions. - * To run this test: `atest FlickerTests:CloseImeWindowToAppTest` + * To run this test: `atest FlickerTests:CloseImeAutoOpenWindowToHomeTest` */ @Presubmit @RequiresDevice @@ -94,14 +94,16 @@ class CloseImeAutoOpenWindowToHomeTest( } layersTrace { - navBarLayerIsAlwaysVisible(bugId = 140855415) - statusBarLayerIsAlwaysVisible(bugId = 140855415) noUncoveredRegions(configuration.startRotation, Surface.ROTATION_0, allStates = false) navBarLayerRotatesAndScales(configuration.startRotation, Surface.ROTATION_0, bugId = 140855415) statusBarLayerRotatesScales(configuration.startRotation, Surface.ROTATION_0) + navBarLayerIsAlwaysVisible(configuration.startRotation != + Surface.ROTATION_0) + statusBarLayerIsAlwaysVisible(configuration.startRotation != + Surface.ROTATION_0) imeLayerBecomesInvisible(bugId = 141458352) imeAppLayerBecomesInvisible(testApp, bugId = 153739621) } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt index 6cfb28202b39c..46f584b51e8c7 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt @@ -100,14 +100,16 @@ class CloseImeWindowToHomeTest( } layersTrace { - navBarLayerIsAlwaysVisible(bugId = 140855415) - statusBarLayerIsAlwaysVisible(bugId = 140855415) noUncoveredRegions(configuration.startRotation, Surface.ROTATION_0, allStates = false) navBarLayerRotatesAndScales(configuration.startRotation, Surface.ROTATION_0, bugId = 140855415) statusBarLayerRotatesScales(configuration.startRotation, Surface.ROTATION_0) + navBarLayerIsAlwaysVisible(configuration.startRotation != + Surface.ROTATION_0) + statusBarLayerIsAlwaysVisible(configuration.startRotation != + Surface.ROTATION_0) imeLayerBecomesInvisible(bugId = 153739621) imeAppLayerBecomesInvisible(testApp, bugId = 153739621) } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt index 1081414e9b6bc..1194933ee3157 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt @@ -87,6 +87,7 @@ class OpenAppColdTest( windowManagerTrace { navBarWindowIsAlwaysVisible() statusBarWindowIsAlwaysVisible() + appWindowReplacesLauncherAsTopWindow(testApp) wallpaperWindowBecomesInvisible() } @@ -99,9 +100,11 @@ class OpenAppColdTest( configuration.endRotation) statusBarLayerRotatesScales(Surface.ROTATION_0, configuration.endRotation) - navBarLayerIsAlwaysVisible( - enabled = configuration.endRotation == Surface.ROTATION_0) - statusBarLayerIsAlwaysVisible(enabled = false) + navBarLayerIsAlwaysVisible(Surface.ROTATION_0 != + configuration.endRotation) + statusBarLayerIsAlwaysVisible(Surface.ROTATION_0 != + configuration.endRotation) + wallpaperLayerBecomesInvisible(testApp) } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt index 2061994b57b14..136be29e421dd 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt @@ -91,6 +91,7 @@ class OpenAppWarmTest( windowManagerTrace { navBarWindowIsAlwaysVisible() statusBarWindowIsAlwaysVisible() + appWindowReplacesLauncherAsTopWindow(testApp) wallpaperWindowBecomesInvisible(enabled = false) } @@ -103,9 +104,11 @@ class OpenAppWarmTest( configuration.endRotation) statusBarLayerRotatesScales(Surface.ROTATION_0, configuration.endRotation) - navBarLayerIsAlwaysVisible( - enabled = configuration.endRotation == Surface.ROTATION_0) - statusBarLayerIsAlwaysVisible(enabled = false) + navBarLayerIsAlwaysVisible(Surface.ROTATION_0 != + configuration.endRotation) + statusBarLayerIsAlwaysVisible(Surface.ROTATION_0 != + configuration.endRotation) + wallpaperLayerBecomesInvisible(testApp) }