diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/open/OpenTrampolineActivityTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/open/OpenTrampolineActivityTest.kt index c05dc324ac9ef..144a73121746f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/open/OpenTrampolineActivityTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/open/OpenTrampolineActivityTest.kt @@ -18,7 +18,6 @@ package com.android.server.wm.flicker.activityembedding import android.platform.test.annotations.Presubmit import android.tools.common.datatypes.Rect -import android.tools.common.datatypes.Region import android.tools.common.flicker.subject.region.RegionSubject import android.tools.common.traces.component.ComponentNameMatcher import android.tools.device.flicker.junit.FlickerParametersRunnerFactory @@ -38,8 +37,8 @@ import org.junit.runners.Parameterized * * Setup: Launch Activity A in fullscreen. * - * Transitions: From A launch a trampoline Activity T, T launches secondary Activity B and - * finishes itself, end up in split A|B. + * Transitions: From A launch a trampoline Activity T, T launches secondary Activity B and finishes + * itself, end up in split A|B. * * To run this test: `atest FlickerTests:OpenTrampolineActivityTest` */ @@ -53,12 +52,10 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding tapl.setExpectedRotationCheckEnabled(false) testApp.launchViaIntent(wmHelper) startDisplayBounds = - wmHelper.currentState.layerState.physicalDisplayBounds - ?: error("Can't get display bounds") - } - transitions { - testApp.launchTrampolineActivity(wmHelper) + wmHelper.currentState.layerState.physicalDisplayBounds + ?: error("Can't get display bounds") } + transitions { testApp.launchTrampolineActivity(wmHelper) } teardown { tapl.goHome() testApp.exit(wmHelper) @@ -70,9 +67,7 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding @Test fun backgroundLayerNeverVisible() { val backgroundColorLayer = ComponentNameMatcher("", "Animation Background") - flicker.assertLayers { - isInvisible(backgroundColorLayer) - } + flicker.assertLayers { isInvisible(backgroundColorLayer) } } /** Trampoline activity should finish itself before the end of this test. */ @@ -96,9 +91,7 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding @Presubmit @Test fun mainActivityWindowAlwaysVisible() { - flicker.assertWm { - isAppWindowVisible(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) - } + flicker.assertWm { isAppWindowVisible(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) } } // TODO(b/289140963): After this is fixed, assert the main Activity window is visible @@ -107,12 +100,8 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding @Presubmit @Test fun mainActivityLayerAlwaysVisible() { - flicker.assertLayersStart { - isVisible(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) - } - flicker.assertLayersEnd { - isVisible(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) - } + flicker.assertLayersStart { isVisible(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) } + flicker.assertLayersEnd { isVisible(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) } } /** Secondary activity is launched from the trampoline activity. */ @@ -121,10 +110,10 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding fun secondaryActivityWindowLaunchedFromTrampoline() { flicker.assertWm { notContains(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) - .then() - .isAppWindowInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) - .then() - .isAppWindowVisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + .then() + .isAppWindowInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + .then() + .isAppWindowVisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) } } @@ -134,8 +123,8 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding fun secondaryActivityLayerLaunchedFromTrampoline() { flicker.assertLayers { isInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) - .then() - .isVisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + .then() + .isVisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) } } @@ -145,36 +134,38 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding fun mainActivityWindowGoesFromFullscreenToSplit() { flicker.assertWm { this.invoke("mainActivityStartsInFullscreen") { - it.visibleRegion(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) + it.visibleRegion(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) .coversExactly(startDisplayBounds) - } - // Begin of transition. - .then() - .isAppWindowInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) - .then() - .invoke("mainAndSecondaryInSplit") { - val mainActivityRegion = - RegionSubject( - it.visibleRegion( - ActivityEmbeddingAppHelper - .MAIN_ACTIVITY_COMPONENT).region, - it.timestamp) - val secondaryActivityRegion = - RegionSubject( - it.visibleRegion( - ActivityEmbeddingAppHelper - .SECONDARY_ACTIVITY_COMPONENT).region, - it.timestamp) - check { "height" } - .that(mainActivityRegion.region.height) - .isEqual(secondaryActivityRegion.region.height) - check { "width" } - .that(mainActivityRegion.region.width) - .isEqual(secondaryActivityRegion.region.width) - mainActivityRegion - .plus(secondaryActivityRegion.region) - .coversExactly(startDisplayBounds) - } + } + // Begin of transition. + .then() + .isAppWindowInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + .then() + .invoke("mainAndSecondaryInSplit") { + val mainActivityRegion = + RegionSubject( + it.visibleRegion(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) + .region, + it.timestamp + ) + val secondaryActivityRegion = + RegionSubject( + it.visibleRegion( + ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT + ) + .region, + it.timestamp + ) + check { "height" } + .that(mainActivityRegion.region.height) + .isEqual(secondaryActivityRegion.region.height) + check { "width" } + .that(mainActivityRegion.region.width) + .isEqual(secondaryActivityRegion.region.width) + mainActivityRegion + .plus(secondaryActivityRegion.region) + .coversExactly(startDisplayBounds) + } } } @@ -184,27 +175,26 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding fun mainActivityLayerGoesFromFullscreenToSplit() { flicker.assertLayers { this.invoke("mainActivityStartsInFullscreen") { - it.visibleRegion(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) + it.visibleRegion(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) .coversExactly(startDisplayBounds) - } - .then() - .isInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) - .then() - .isVisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + } + .then() + .isInvisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + .then() + .isVisible(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) } flicker.assertLayersEnd { - val leftLayerRegion = visibleRegion( - ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) + val leftLayerRegion = visibleRegion(ActivityEmbeddingAppHelper.MAIN_ACTIVITY_COMPONENT) val rightLayerRegion = - visibleRegion(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) + visibleRegion(ActivityEmbeddingAppHelper.SECONDARY_ACTIVITY_COMPONENT) // Compare dimensions of two splits, given we're using default split attributes, // both activities take up the same visible size on the display. check { "height" } - .that(leftLayerRegion.region.height) - .isEqual(rightLayerRegion.region.height) + .that(leftLayerRegion.region.height) + .isEqual(rightLayerRegion.region.height) check { "width" } - .that(leftLayerRegion.region.width) - .isEqual(rightLayerRegion.region.width) + .that(leftLayerRegion.region.width) + .isEqual(rightLayerRegion.region.width) leftLayerRegion.notOverlaps(rightLayerRegion.region) // Layers of two activities sum to be fullscreen size on display. leftLayerRegion.plus(rightLayerRegion.region).coversExactly(startDisplayBounds) @@ -225,4 +215,4 @@ class OpenTrampolineActivityTest(flicker: LegacyFlickerTest) : ActivityEmbedding @JvmStatic fun getParams() = LegacyFlickerTestFactory.nonRotationTests() } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ActivityEmbeddingAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ActivityEmbeddingAppHelper.kt index eac88132d410a..a72ec1e678b3a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ActivityEmbeddingAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ActivityEmbeddingAppHelper.kt @@ -82,17 +82,17 @@ constructor( */ fun launchTrampolineActivity(wmHelper: WindowManagerStateHelper) { val launchButton = - uiDevice.wait( - Until.findObject(By.res(getPackage(), "launch_trampoline_button")), - FIND_TIMEOUT - ) + uiDevice.wait( + Until.findObject(By.res(getPackage(), "launch_trampoline_button")), + FIND_TIMEOUT + ) require(launchButton != null) { "Can't find launch trampoline activity button on screen." } launchButton.click() wmHelper - .StateSyncBuilder() - .withActivityState(SECONDARY_ACTIVITY_COMPONENT, PlatformConsts.STATE_RESUMED) - .withActivityRemoved(TRAMPOLINE_ACTIVITY_COMPONENT) - .waitForAndVerify() + .StateSyncBuilder() + .withActivityState(SECONDARY_ACTIVITY_COMPONENT, PlatformConsts.STATE_RESUMED) + .withActivityRemoved(TRAMPOLINE_ACTIVITY_COMPONENT) + .waitForAndVerify() } /** @@ -217,7 +217,7 @@ constructor( .toFlickerComponent() val TRAMPOLINE_ACTIVITY_COMPONENT = - ActivityOptions.ActivityEmbedding.TrampolineActivity.COMPONENT.toFlickerComponent() + ActivityOptions.ActivityEmbedding.TrampolineActivity.COMPONENT.toFlickerComponent() @JvmStatic fun getWindowExtensions(): WindowExtensions? { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt index 842ece38c2826..1987a68745520 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt @@ -23,7 +23,6 @@ import android.tools.device.flicker.junit.FlickerParametersRunnerFactory import android.tools.device.flicker.legacy.FlickerBuilder import android.tools.device.flicker.legacy.LegacyFlickerTest import android.tools.device.flicker.legacy.LegacyFlickerTestFactory -import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.helpers.SimpleAppHelper import org.junit.FixMethodOrder import org.junit.Test @@ -81,11 +80,10 @@ import org.junit.runners.Parameterized * apps are running before setup * ``` */ -@RequiresDevice @RunWith(Parameterized::class) @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) -open class ChangeAppRotationTest(flicker: LegacyFlickerTest) : RotationTransition(flicker) { +class ChangeAppRotationTest(flicker: LegacyFlickerTest) : RotationTransition(flicker) { override val testApp = SimpleAppHelper(instrumentation) override val transition: FlickerBuilder.() -> Unit get() = { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTestCfArm.kt deleted file mode 100644 index 1ab5c5ad77b58..0000000000000 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTestCfArm.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.wm.flicker.rotation - -import android.tools.device.flicker.junit.FlickerParametersRunnerFactory -import android.tools.device.flicker.legacy.LegacyFlickerTest -import android.tools.device.flicker.legacy.LegacyFlickerTestFactory -import org.junit.FixMethodOrder -import org.junit.runner.RunWith -import org.junit.runners.MethodSorters -import org.junit.runners.Parameterized - -@RunWith(Parameterized::class) -@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -class ChangeAppRotationTestCfArm(flicker: LegacyFlickerTest) : ChangeAppRotationTest(flicker) { - companion object { - /** - * Creates the test configurations. - * - * See [LegacyFlickerTestFactory.rotationTests] for configuring screen orientation and - * navigation modes. - */ - @Parameterized.Parameters(name = "{0}") - @JvmStatic - fun getParams() = LegacyFlickerTestFactory.rotationTests() - } -} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt index b6ad3cc7fc509..5b127c887da85 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt @@ -26,7 +26,6 @@ import android.tools.device.flicker.legacy.FlickerBuilder import android.tools.device.flicker.legacy.LegacyFlickerTest import android.tools.device.flicker.legacy.LegacyFlickerTestFactory import android.view.WindowManager -import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.helpers.SeamlessRotationAppHelper import com.android.server.wm.flicker.testapp.ActivityOptions import org.junit.FixMethodOrder @@ -88,11 +87,10 @@ import org.junit.runners.Parameterized * apps are running before setup * ``` */ -@RequiresDevice @RunWith(Parameterized::class) @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) -open class SeamlessAppRotationTest(flicker: LegacyFlickerTest) : RotationTransition(flicker) { +class SeamlessAppRotationTest(flicker: LegacyFlickerTest) : RotationTransition(flicker) { override val testApp = SeamlessRotationAppHelper(instrumentation) /** {@inheritDoc} */ diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTestCfArm.kt deleted file mode 100644 index 592be05c81821..0000000000000 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTestCfArm.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.wm.flicker.rotation - -import android.tools.device.flicker.junit.FlickerParametersRunnerFactory -import android.tools.device.flicker.legacy.LegacyFlickerTest -import android.tools.device.flicker.legacy.LegacyFlickerTestFactory -import com.android.server.wm.flicker.testapp.ActivityOptions -import org.junit.FixMethodOrder -import org.junit.runner.RunWith -import org.junit.runners.MethodSorters -import org.junit.runners.Parameterized - -/** This test should fail because of b/264518826 */ -@RunWith(Parameterized::class) -@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -open class SeamlessAppRotationTestCfArm(flicker: LegacyFlickerTest) : - SeamlessAppRotationTest(flicker) { - companion object { - /** - * Creates the test configurations for seamless rotation based on the default rotation tests - * from [LegacyFlickerTestFactory.rotationTests], but adding a flag ( - * [ActivityOptions.SeamlessRotation.EXTRA_STARVE_UI_THREAD]) to indicate if the app should - * starve the UI thread of not - */ - @Parameterized.Parameters(name = "{0}") - @JvmStatic - fun getParams() = - LegacyFlickerTestFactory.rotationTests().flatMap { sourceCfg -> - val legacyCfg = sourceCfg as LegacyFlickerTest - val defaultRun = createConfig(legacyCfg, starveUiThread = false) - val busyUiRun = createConfig(legacyCfg, starveUiThread = true) - listOf(defaultRun, busyUiRun) - } - } -}