Merge "App layer now stays visible with restart dialog" into udc-dev

This commit is contained in:
Graciela Putri
2023-05-03 08:21:20 +00:00
committed by Android (Google) Code Review
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.system.helpers.CommandsHelper
import android.tools.common.traces.component.ComponentNameMatcher
import android.tools.device.flicker.legacy.FlickerBuilder
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.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.appWindowIsVisibleAtEnd
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.Before
import org.junit.runners.Parameterized
@@ -35,7 +38,7 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
protected val context: Context = instrumentation.context
protected val letterboxApp = LetterboxAppHelper(instrumentation)
lateinit var cmdHelper: CommandsHelper
lateinit var letterboxStyle: HashMap<String, String>
private lateinit var letterboxStyle: HashMap<String, String>
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit
@@ -45,12 +48,22 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
letterboxApp.launchViaIntent(wmHelper)
setEndRotation()
}
teardown {
letterboxApp.exit(wmHelper)
}
}
@Before
fun before() {
cmdHelper = CommandsHelper.getInstance(instrumentation)
Assume.assumeTrue(tapl.isTablet && isIgnoreOrientationRequest())
letterboxStyle = mapLetterboxStyle()
setLetterboxEducationEnabled(false)
}
@After
fun after() {
resetLetterboxEducationEnabled()
}
private fun mapLetterboxStyle(): HashMap<String, String> {
@@ -67,6 +80,22 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
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 {
val res = cmdHelper.executeShellCommand("wm get-ignore-orientation-request")
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 */
private fun assumeLetterboxRoundedCornersEnabled() {
if (!::letterboxStyle.isInitialized) {
letterboxStyle = mapLetterboxStyle()
}
Assume.assumeTrue(letterboxStyle.getValue("Corner radius") != "0")
Assume.assumeTrue(getLetterboxStyle().getValue("Corner radius") != "0")
}
fun assertLetterboxAppVisibleAtStartAndEnd() {
@@ -100,12 +126,20 @@ abstract class BaseAppCompat(flicker: FlickerTest) : BaseTest(flicker) {
flicker.appWindowIsVisibleAtEnd(letterboxApp)
}
fun assertAppLetterboxedAtEnd() =
flicker.assertLayersEnd { isVisible(ComponentNameMatcher.LETTERBOX) }
fun assertAppLetterboxedAtStart() =
flicker.assertLayersStart { isVisible(ComponentNameMatcher.LETTERBOX) }
fun assertLetterboxAppLayerKeepVisible() = flicker.layerKeepVisible(letterboxApp)
companion object {
/**
* Creates the test configurations.
*
* See [FlickerTestFactory.rotationTests] for configuring screen orientation and navigation
* modes.
* See [FlickerTestFactory.rotationTests] for configuring screen orientation and
* navigation modes.
*/
@Parameterized.Parameters(name = "{0}")
@JvmStatic

View File

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

View File

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