Merge "App layer now stays visible with restart dialog" into udc-dev am: 81c0694a62 am: 33556687b5

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22761824

Change-Id: Ie344dd5d85e2b6aee6233ce93f430a42bd87970f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Graciela Putri
2023-05-03 08:55:16 +00:00
committed by Automerger Merge Worker
3 changed files with 61 additions and 16 deletions

View File

@@ -18,15 +18,18 @@ package com.android.wm.shell.flicker.appcompat
import android.content.Context import android.content.Context
import android.system.helpers.CommandsHelper import android.system.helpers.CommandsHelper
import android.tools.common.traces.component.ComponentNameMatcher
import android.tools.device.flicker.legacy.FlickerBuilder import android.tools.device.flicker.legacy.FlickerBuilder
import android.tools.device.flicker.legacy.FlickerTest import android.tools.device.flicker.legacy.FlickerTest
import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.LetterboxAppHelper
import android.tools.device.flicker.legacy.FlickerTestFactory import android.tools.device.flicker.legacy.FlickerTestFactory
import android.tools.device.flicker.legacy.IFlickerTestData import android.tools.device.flicker.legacy.IFlickerTestData
import com.android.server.wm.flicker.helpers.LetterboxAppHelper
import com.android.server.wm.flicker.helpers.setRotation
import com.android.wm.shell.flicker.BaseTest import com.android.wm.shell.flicker.BaseTest
import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd
import com.android.wm.shell.flicker.appWindowIsVisibleAtStart import com.android.wm.shell.flicker.appWindowIsVisibleAtStart
import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd
import com.android.wm.shell.flicker.layerKeepVisible
import org.junit.After
import org.junit.Assume import org.junit.Assume
import org.junit.Before import org.junit.Before
import org.junit.runners.Parameterized import org.junit.runners.Parameterized
@@ -35,7 +38,7 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
protected val context: Context = instrumentation.context protected val context: Context = instrumentation.context
protected val letterboxApp = LetterboxAppHelper(instrumentation) protected val letterboxApp = LetterboxAppHelper(instrumentation)
lateinit var cmdHelper: CommandsHelper lateinit var cmdHelper: CommandsHelper
lateinit var letterboxStyle: HashMap<String, String> private lateinit var letterboxStyle: HashMap<String, String>
/** {@inheritDoc} */ /** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit override val transition: FlickerBuilder.() -> Unit
@@ -45,12 +48,22 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
letterboxApp.launchViaIntent(wmHelper) letterboxApp.launchViaIntent(wmHelper)
setEndRotation() setEndRotation()
} }
teardown {
letterboxApp.exit(wmHelper)
}
} }
@Before @Before
fun before() { fun before() {
cmdHelper = CommandsHelper.getInstance(instrumentation) cmdHelper = CommandsHelper.getInstance(instrumentation)
Assume.assumeTrue(tapl.isTablet && isIgnoreOrientationRequest()) Assume.assumeTrue(tapl.isTablet && isIgnoreOrientationRequest())
letterboxStyle = mapLetterboxStyle()
setLetterboxEducationEnabled(false)
}
@After
fun after() {
resetLetterboxEducationEnabled()
} }
private fun mapLetterboxStyle(): HashMap<String, String> { private fun mapLetterboxStyle(): HashMap<String, String> {
@@ -67,6 +80,22 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
return map return map
} }
private fun getLetterboxStyle(): HashMap<String, String> {
if (!::letterboxStyle.isInitialized) {
letterboxStyle = mapLetterboxStyle()
}
return letterboxStyle
}
private fun resetLetterboxEducationEnabled() {
val enabled = getLetterboxStyle().getValue("Is education enabled")
cmdHelper.executeShellCommand("wm set-letterbox-style --isEducationEnabled $enabled")
}
private fun setLetterboxEducationEnabled(enabled: Boolean) {
cmdHelper.executeShellCommand("wm set-letterbox-style --isEducationEnabled $enabled")
}
private fun isIgnoreOrientationRequest(): Boolean { private fun isIgnoreOrientationRequest(): Boolean {
val res = cmdHelper.executeShellCommand("wm get-ignore-orientation-request") val res = cmdHelper.executeShellCommand("wm get-ignore-orientation-request")
return res != null && res.contains("true") return res != null && res.contains("true")
@@ -89,10 +118,7 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
/** Only run on tests with config_letterboxActivityCornersRadius != 0 in devices */ /** Only run on tests with config_letterboxActivityCornersRadius != 0 in devices */
private fun assumeLetterboxRoundedCornersEnabled() { private fun assumeLetterboxRoundedCornersEnabled() {
if (!::letterboxStyle.isInitialized) { Assume.assumeTrue(getLetterboxStyle().getValue("Corner radius") != "0")
letterboxStyle = mapLetterboxStyle()
}
Assume.assumeTrue(letterboxStyle.getValue("Corner radius") != "0")
} }
fun assertLetterboxAppVisibleAtStartAndEnd() { fun assertLetterboxAppVisibleAtStartAndEnd() {
@@ -100,12 +126,20 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
flicker.appWindowIsVisibleAtEnd(letterboxApp) flicker.appWindowIsVisibleAtEnd(letterboxApp)
} }
fun assertAppLetterboxedAtEnd() =
flicker.assertLayersEnd { isVisible(ComponentNameMatcher.LETTERBOX) }
fun assertAppLetterboxedAtStart() =
flicker.assertLayersStart { isVisible(ComponentNameMatcher.LETTERBOX) }
fun assertLetterboxAppLayerKeepVisible() = flicker.layerKeepVisible(letterboxApp)
companion object { companion object {
/** /**
* Creates the test configurations. * Creates the test configurations.
* *
* See [FlickerTestFactory.rotationTests] for configuring screen orientation and navigation * See [FlickerTestFactory.rotationTests] for configuring screen orientation and
* modes. * navigation modes.
*/ */
@Parameterized.Parameters(name = "{0}") @Parameterized.Parameters(name = "{0}")
@JvmStatic @JvmStatic

View File

@@ -70,6 +70,10 @@ class OpenAppInSizeCompatModeTest(flicker: FlickerTest) : BaseAppCompat(flicker)
@Test @Test
fun letterboxedAppHasRoundedCorners() = assertLetterboxAppAtEndHasRoundedCorners() fun letterboxedAppHasRoundedCorners() = assertLetterboxAppAtEndHasRoundedCorners()
@Postsubmit
@Test
fun appIsLetterboxedAtEnd() = assertAppLetterboxedAtEnd()
/** /**
* Checks that the [ComponentNameMatcher.ROTATION] layer appears during the transition, doesn't * Checks that the [ComponentNameMatcher.ROTATION] layer appears during the transition, doesn't
* flicker, and disappears before the transition is complete * flicker, and disappears before the transition is complete

View File

@@ -53,23 +53,30 @@ class RestartAppInSizeCompatModeTest(flicker: FlickerTest) : BaseAppCompat(flick
get() = { get() = {
super.transition(this) super.transition(this)
transitions { letterboxApp.clickRestart(wmHelper) } transitions { letterboxApp.clickRestart(wmHelper) }
teardown { letterboxApp.exit(wmHelper) }
} }
@Postsubmit @Test fun appVisibleAtStartAndEnd() = assertLetterboxAppVisibleAtStartAndEnd() @Postsubmit @Test fun appVisibleAtStartAndEnd() = assertLetterboxAppVisibleAtStartAndEnd()
@Postsubmit @Postsubmit
@Test @Test
fun appLayerVisibilityChanges() { fun appWindowVisibilityChanges() {
flicker.assertLayers { flicker.assertWm {
this.isVisible(letterboxApp) this.isAppWindowVisible(letterboxApp)
.then() .then()
.isInvisible(letterboxApp) .isAppWindowInvisible(letterboxApp) // animatingExit true
.then() .then()
.isVisible(letterboxApp) .isAppWindowVisible(letterboxApp) // Activity finish relaunching
} }
} }
@Postsubmit
@Test
fun appLayerKeepVisible() = assertLetterboxAppLayerKeepVisible()
@Postsubmit
@Test
fun appIsLetterboxedAtStart() = assertAppLetterboxedAtStart()
@Postsubmit @Postsubmit
@Test @Test
fun letterboxedAppHasRoundedCorners() = assertLetterboxAppAtStartHasRoundedCorners() fun letterboxedAppHasRoundedCorners() = assertLetterboxAppAtStartHasRoundedCorners()