From b685ccae88c0bc237ef2a2831480fe0ce0aaa27f Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Mon, 2 Aug 2021 17:08:48 -0700 Subject: Fix ReOpenImeWindowTest flicker test for shell transitions In this case, legacy transitions is incorrect because it was written before live-tiles and, due to some quirk, still manages to pass the now-incorrect test. However, the test is technically wrong and thus shell transitions doesn't pass. This CL fixes the tests when shell transitions is enabled. Specifically, there are a few tests explicitly called "X is ALWAYS visible" which should test that the window in question remains visible throughout the test. However, the test was adjusted to test that the windows go away and come back. With shell transitions the windows behave correctly, so we can remove the adjustments. Bug: 193565597 Test: atest ReOpenImeWindowTest Change-Id: I33c5b6327e5b5762958b66ff20d5fe67b9566c10 Merged-In: I33c5b6327e5b5762958b66ff20d5fe67b9566c10 --- .../server/wm/flicker/ime/ReOpenImeWindowTest.kt | 43 ++++++++++++++++++---- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index fe1b1cd4795d..b37c40447934 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -18,6 +18,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation import android.content.ComponentName +import android.os.SystemProperties import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -43,6 +44,7 @@ import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper +import org.junit.Assume import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -61,6 +63,8 @@ import org.junit.runners.Parameterized class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.config.startRotation) + private val isShellTransitionsEnabled = + SystemProperties.getBoolean("persist.debug.shell_transit", false) @FlickerBuilderProvider fun buildFlicker(): FlickerBuilder { @@ -122,15 +126,17 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { @Presubmit @Test - fun imeWindowIsAlwaysVisible() = testSpec.imeWindowIsAlwaysVisible(true) + fun imeWindowIsAlwaysVisible() = testSpec.imeWindowIsAlwaysVisible(!isShellTransitionsEnabled) @Presubmit @Test - fun imeAppWindowVisibility() { - // the app starts visible in live tile, then becomes invisible during animation and - // is again launched. Since we log 1x per frame, sometimes the activity visibility and - // the app visibility are updated together, sometimes not, thus ignore activity check - // at the start + fun imeAppWindowVisibilityLegacy() { + Assume.assumeFalse(isShellTransitionsEnabled) + // the app starts visible in live tile, and stays visible for the duration of entering + // and exiting overview. However, legacy transitions seem to have a bug which causes + // everything to restart during the test, so expect the app to disappear and come back. + // Since we log 1x per frame, sometimes the activity visibility and the app visibility + // are updated together, sometimes not, thus ignore activity check at the start testSpec.assertWm { this.isAppWindowVisible(testApp.component, ignoreActivity = true) .then() @@ -140,6 +146,19 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { } } + @Presubmit + @Test + fun imeAppWindowVisibility() { + Assume.assumeTrue(isShellTransitionsEnabled) + // the app starts visible in live tile, and stays visible for the duration of entering + // and exiting overview. Since we log 1x per frame, sometimes the activity visibility + // and the app visibility are updated together, sometimes not, thus ignore activity + // check at the start + testSpec.assertWm { + this.isAppWindowVisible(testApp.component, ignoreActivity = true) + } + } + @Presubmit @Test // During testing the launcher is always in portrait mode @@ -155,7 +174,8 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { @Presubmit @Test - fun imeLayerIsBecomesVisible() { + fun imeLayerIsBecomesVisibleLegacy() { + Assume.assumeFalse(isShellTransitionsEnabled) testSpec.assertLayers { this.isVisible(WindowManagerStateHelper.IME_COMPONENT) .then() @@ -165,6 +185,15 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { } } + @Presubmit + @Test + fun imeLayerIsBecomesVisible() { + Assume.assumeTrue(isShellTransitionsEnabled) + testSpec.assertLayers { + this.isVisible(WindowManagerStateHelper.IME_COMPONENT) + } + } + @Presubmit @Test fun appLayerReplacesLauncher() { -- cgit v1.2.3-59-g8ed1b