Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81c0694a authored by Graciela Putri's avatar Graciela Putri Committed by Android (Google) Code Review
Browse files

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

parents 1790699a ddbcb772
Loading
Loading
Loading
Loading
+44 −10
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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
+13 −6
Original line number Diff line number Diff line
@@ -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()