Merge changes I08071058,I9a64a7ab into sc-dev

* changes:
  Update app pairs tests to new DSL format
  Create common assertions for new tests
This commit is contained in:
TreeHugger Robot
2021-02-09 08:41:44 +00:00
committed by Android (Google) Code Review
8 changed files with 585 additions and 162 deletions

View File

@@ -18,12 +18,116 @@ package com.android.wm.shell.flicker
import android.graphics.Region
import android.view.Surface
import com.android.server.wm.flicker.dsl.LayersAssertionBuilder
import com.android.server.wm.flicker.dsl.LayersAssertionBuilderLegacy
import com.android.server.wm.flicker.APP_PAIR_SPLIT_DIVIDER
import com.android.server.wm.flicker.DOCKED_STACK_DIVIDER
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.flicker.traces.layers.getVisibleBounds
@JvmOverloads
fun LayersAssertionBuilder.appPairsDividerIsVisible(bugId: Int = 0) {
end("appPairsDividerIsVisible", bugId) {
this.isVisible(APP_PAIR_SPLIT_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.appPairsDividerIsInvisible(bugId: Int = 0) {
end("appPairsDividerIsInVisible", bugId) {
this.notExists(APP_PAIR_SPLIT_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.appPairsDividerBecomesVisible(bugId: Int = 0) {
all("dividerLayerBecomesVisible", bugId) {
this.hidesLayer(DOCKED_STACK_DIVIDER)
.then()
.showsLayer(DOCKED_STACK_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.dockedStackDividerIsVisible(bugId: Int = 0) {
end("dockedStackDividerIsVisible", bugId) {
this.isVisible(DOCKED_STACK_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.dockedStackDividerBecomesVisible(bugId: Int = 0) {
all("dividerLayerBecomesVisible", bugId) {
this.hidesLayer(DOCKED_STACK_DIVIDER)
.then()
.showsLayer(DOCKED_STACK_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.dockedStackDividerBecomesInvisible(bugId: Int = 0) {
all("dividerLayerBecomesInvisible", bugId) {
this.showsLayer(DOCKED_STACK_DIVIDER)
.then()
.hidesLayer(DOCKED_STACK_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.dockedStackDividerIsInvisible(bugId: Int = 0) {
end("dockedStackDividerIsInvisible", bugId) {
this.notExists(DOCKED_STACK_DIVIDER)
}
}
@JvmOverloads
fun LayersAssertionBuilder.appPairsPrimaryBoundsIsVisible(
rotation: Int,
primaryLayerName: String,
bugId: Int = 0
) {
end("PrimaryAppBounds", bugId) {
val dividerRegion = entry.getVisibleBounds(APP_PAIR_SPLIT_DIVIDER)
this.hasVisibleRegion(primaryLayerName, getPrimaryRegion(dividerRegion, rotation))
}
}
@JvmOverloads
fun LayersAssertionBuilder.appPairsSecondaryBoundsIsVisible(
rotation: Int,
secondaryLayerName: String,
bugId: Int = 0
) {
end("SecondaryAppBounds", bugId) {
val dividerRegion = entry.getVisibleBounds(APP_PAIR_SPLIT_DIVIDER)
this.hasVisibleRegion(secondaryLayerName, getSecondaryRegion(dividerRegion, rotation))
}
}
@JvmOverloads
fun LayersAssertionBuilder.dockedStackPrimaryBoundsIsVisible(
rotation: Int,
primaryLayerName: String,
bugId: Int = 0
) {
end("PrimaryAppBounds", bugId) {
val dividerRegion = entry.getVisibleBounds(DOCKED_STACK_DIVIDER)
this.hasVisibleRegion(primaryLayerName, getPrimaryRegion(dividerRegion, rotation))
}
}
@JvmOverloads
fun LayersAssertionBuilder.dockedStackSecondaryBoundsIsVisible(
rotation: Int,
secondaryLayerName: String,
bugId: Int = 0
) {
end("SecondaryAppBounds", bugId) {
val dividerRegion = entry.getVisibleBounds(DOCKED_STACK_DIVIDER)
this.hasVisibleRegion(secondaryLayerName, getSecondaryRegion(dividerRegion, rotation))
}
}
@JvmOverloads
fun LayersAssertionBuilderLegacy.appPairsDividerIsVisible(
bugId: Int = 0,
@@ -51,8 +155,8 @@ fun LayersAssertionBuilderLegacy.appPairsDividerBecomesVisible(
) {
all("dividerLayerBecomesVisible", bugId, enabled) {
this.hidesLayer(DOCKED_STACK_DIVIDER)
.then()
.showsLayer(DOCKED_STACK_DIVIDER)
.then()
.showsLayer(DOCKED_STACK_DIVIDER)
}
}
@@ -73,8 +177,8 @@ fun LayersAssertionBuilderLegacy.dockedStackDividerBecomesVisible(
) {
all("dividerLayerBecomesVisible", bugId, enabled) {
this.hidesLayer(DOCKED_STACK_DIVIDER)
.then()
.showsLayer(DOCKED_STACK_DIVIDER)
.then()
.showsLayer(DOCKED_STACK_DIVIDER)
}
}
@@ -85,8 +189,8 @@ fun LayersAssertionBuilderLegacy.dockedStackDividerBecomesInvisible(
) {
all("dividerLayerBecomesInvisible", bugId, enabled) {
this.showsLayer(DOCKED_STACK_DIVIDER)
.then()
.hidesLayer(DOCKED_STACK_DIVIDER)
.then()
.hidesLayer(DOCKED_STACK_DIVIDER)
}
}

View File

@@ -17,7 +17,6 @@
package com.android.wm.shell.flicker.apppairs
import android.os.Bundle
import android.platform.test.annotations.Presubmit
import android.os.SystemClock
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
@@ -40,7 +39,6 @@ import org.junit.runners.Parameterized
* Test cold launch app from launcher.
* To run this test: `atest WMShellFlickerTests:AppPairsTestCannotPairNonResizeableApps`
*/
@Presubmit
@RequiresDevice
@RunWith(Parameterized::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -51,10 +49,9 @@ class AppPairsTestCannotPairNonResizeableApps(
@Parameterized.Parameters(name = "{0}")
@JvmStatic
fun getParams(): List<Array<Any>> {
val testTag = "testAppPairs_cannotPairNonResizeableApps"
val testSpec: FlickerBuilder.(Bundle) -> Unit = { configuration ->
withTestName {
buildTestTag(testTag, configuration)
buildTestTag(configuration)
}
transitions {
nonResizeableApp?.launchViaIntent(wmHelper)
@@ -64,17 +61,20 @@ class AppPairsTestCannotPairNonResizeableApps(
SystemClock.sleep(AppPairsHelper.TIMEOUT_MS)
}
assertions {
layersTrace {
appPairsDividerIsInvisible()
}
windowManagerTrace {
end("onlyResizeableAppWindowVisible") {
presubmit {
layersTrace {
appPairsDividerIsInvisible()
}
windowManagerTrace {
val nonResizeableApp = nonResizeableApp
require(nonResizeableApp != null) {
"Non resizeable app not initialized"
}
isVisible(nonResizeableApp.defaultWindowName)
isInvisible(primaryApp.defaultWindowName)
end("onlyResizeableAppWindowVisible") {
isVisible(nonResizeableApp.defaultWindowName)
isInvisible(primaryApp.defaultWindowName)
}
}
}
}

View File

@@ -18,7 +18,6 @@ package com.android.wm.shell.flicker.apppairs
import android.os.Bundle
import android.os.SystemClock
import android.platform.test.annotations.Presubmit
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.APP_PAIR_SPLIT_DIVIDER
@@ -38,7 +37,6 @@ import org.junit.runners.Parameterized
* Test cold launch app from launcher.
* To run this test: `atest WMShellFlickerTests:AppPairsTestPairPrimaryAndSecondaryApps`
*/
@Presubmit
@RequiresDevice
@RunWith(Parameterized::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -49,10 +47,9 @@ class AppPairsTestPairPrimaryAndSecondaryApps(
@Parameterized.Parameters(name = "{0}")
@JvmStatic
fun getParams(): List<Array<Any>> {
val testTag = "testAppPairs_pairPrimaryAndSecondaryApps"
val testSpec: FlickerBuilder.(Bundle) -> Unit = { configuration ->
withTestName {
buildTestTag(testTag, configuration)
buildTestTag(configuration)
}
transitions {
// TODO pair apps through normal UX flow
@@ -61,20 +58,27 @@ class AppPairsTestPairPrimaryAndSecondaryApps(
SystemClock.sleep(AppPairsHelper.TIMEOUT_MS)
}
assertions {
layersTrace {
appPairsDividerIsVisible()
end("appsEndingBounds", enabled = false) {
val dividerRegion = entry.getVisibleBounds(APP_PAIR_SPLIT_DIVIDER)
this.hasVisibleRegion(primaryApp.defaultWindowName,
appPairsHelper.getPrimaryBounds(dividerRegion))
.hasVisibleRegion(secondaryApp.defaultWindowName,
appPairsHelper.getSecondaryBounds(dividerRegion))
presubmit {
layersTrace {
appPairsDividerIsVisible()
}
windowManagerTrace {
end("bothAppWindowsVisible") {
isVisible(primaryApp.defaultWindowName)
isVisible(secondaryApp.defaultWindowName)
}
}
}
windowManagerTrace {
end("bothAppWindowsVisible") {
isVisible(primaryApp.defaultWindowName)
isVisible(secondaryApp.defaultWindowName)
flaky {
layersTrace {
end("appsEndingBounds") {
val dividerRegion = entry.getVisibleBounds(APP_PAIR_SPLIT_DIVIDER)
this.hasVisibleRegion(primaryApp.defaultWindowName,
appPairsHelper.getPrimaryBounds(dividerRegion))
.hasVisibleRegion(secondaryApp.defaultWindowName,
appPairsHelper.getSecondaryBounds(dividerRegion))
}
}
}
}

View File

@@ -18,7 +18,6 @@ package com.android.wm.shell.flicker.apppairs
import android.os.Bundle
import android.os.SystemClock
import android.platform.test.annotations.Presubmit
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.APP_PAIR_SPLIT_DIVIDER
@@ -38,7 +37,6 @@ import org.junit.runners.Parameterized
* Test cold launch app from launcher.
* To run this test: `atest WMShellFlickerTests:AppPairsTestUnpairPrimaryAndSecondaryApps`
*/
@Presubmit
@RequiresDevice
@RunWith(Parameterized::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -49,10 +47,9 @@ class AppPairsTestUnpairPrimaryAndSecondaryApps(
@Parameterized.Parameters(name = "{0}")
@JvmStatic
fun getParams(): List<Array<Any>> {
val testTag = "testAppPairs_unpairPrimaryAndSecondaryApps"
val testSpec: FlickerBuilder.(Bundle) -> Unit = { configuration ->
withTestName {
buildTestTag(testTag, configuration)
buildTestTag(configuration)
}
setup {
executeShellCommand(
@@ -66,24 +63,31 @@ class AppPairsTestUnpairPrimaryAndSecondaryApps(
SystemClock.sleep(AppPairsHelper.TIMEOUT_MS)
}
assertions {
layersTrace {
appPairsDividerIsInvisible()
start("appsStartingBounds", enabled = false) {
val dividerRegion = entry.getVisibleBounds(APP_PAIR_SPLIT_DIVIDER)
this.hasVisibleRegion(primaryApp.defaultWindowName,
appPairsHelper.getPrimaryBounds(dividerRegion))
.hasVisibleRegion(secondaryApp.defaultWindowName,
appPairsHelper.getSecondaryBounds(dividerRegion))
presubmit {
layersTrace {
appPairsDividerIsInvisible()
}
end("appsEndingBounds", enabled = false) {
this.notExists(primaryApp.defaultWindowName)
.notExists(secondaryApp.defaultWindowName)
windowManagerTrace {
end("bothAppWindowsInvisible") {
isInvisible(primaryApp.defaultWindowName)
isInvisible(secondaryApp.defaultWindowName)
}
}
}
windowManagerTrace {
end("bothAppWindowsInvisible") {
isInvisible(primaryApp.defaultWindowName)
isInvisible(secondaryApp.defaultWindowName)
flaky {
layersTrace {
start("appsStartingBounds") {
val dividerRegion = entry.getVisibleBounds(APP_PAIR_SPLIT_DIVIDER)
this.hasVisibleRegion(primaryApp.defaultWindowName,
appPairsHelper.getPrimaryBounds(dividerRegion))
.hasVisibleRegion(secondaryApp.defaultWindowName,
appPairsHelper.getSecondaryBounds(dividerRegion))
}
end("appsEndingBounds") {
this.notExists(primaryApp.defaultWindowName)
.notExists(secondaryApp.defaultWindowName)
}
}
}
}

View File

@@ -18,7 +18,6 @@ package com.android.wm.shell.flicker.apppairs
import android.os.Bundle
import android.os.SystemClock
import android.platform.test.annotations.Presubmit
import android.view.Surface
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
@@ -46,7 +45,6 @@ import org.junit.runners.Parameterized
* Test open apps to app pairs and rotate.
* To run this test: `atest WMShellFlickerTests:RotateTwoLaunchedAppsInAppPairsMode`
*/
@Presubmit
@RequiresDevice
@RunWith(Parameterized::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -60,7 +58,7 @@ class RotateTwoLaunchedAppsInAppPairsMode(
fun getParams(): Collection<Array<Any>> {
val testSpec: FlickerBuilder.(Bundle) -> Unit = { configuration ->
withTestName {
buildTestTag("testRotateTwoLaunchedAppsInAppPairsMode", configuration)
buildTestTag(configuration)
}
transitions {
executeShellCommand(composePairsCommand(
@@ -69,23 +67,28 @@ class RotateTwoLaunchedAppsInAppPairsMode(
setRotation(configuration.endRotation)
}
assertions {
layersTrace {
navBarLayerRotatesAndScales(Surface.ROTATION_0, configuration.endRotation,
enabled = false)
statusBarLayerRotatesScales(Surface.ROTATION_0, configuration.endRotation,
enabled = false)
appPairsDividerIsVisible(enabled = false)
appPairsPrimaryBoundsIsVisible(configuration.endRotation,
primaryApp.defaultWindowName, bugId = 172776659)
appPairsSecondaryBoundsIsVisible(configuration.endRotation,
secondaryApp.defaultWindowName, bugId = 172776659)
presubmit {
windowManagerTrace {
navBarWindowIsAlwaysVisible()
statusBarWindowIsAlwaysVisible()
end("bothAppWindowsVisible") {
isVisible(primaryApp.defaultWindowName)
.isVisible(secondaryApp.defaultWindowName)
}
}
}
windowManagerTrace {
navBarWindowIsAlwaysVisible()
statusBarWindowIsAlwaysVisible()
end("bothAppWindowsVisible") {
isVisible(primaryApp.defaultWindowName)
.isVisible(secondaryApp.defaultWindowName)
flaky {
layersTrace {
appPairsDividerIsVisible()
navBarLayerRotatesAndScales(Surface.ROTATION_0,
configuration.endRotation)
statusBarLayerRotatesScales(Surface.ROTATION_0,
configuration.endRotation)
appPairsPrimaryBoundsIsVisible(configuration.endRotation,
primaryApp.defaultWindowName, bugId = 172776659)
appPairsSecondaryBoundsIsVisible(configuration.endRotation,
secondaryApp.defaultWindowName, bugId = 172776659)
}
}
}

View File

@@ -62,7 +62,7 @@ class RotateTwoLaunchedAppsRotateAndEnterAppPairsMode(
fun getParams(): Collection<Array<Any>> {
val testSpec: FlickerBuilder.(Bundle) -> Unit = { configuration ->
withTestName {
buildTestTag("testRotateAndEnterAppPairsMode", configuration)
buildTestTag(configuration)
}
transitions {
this.setRotation(configuration.endRotation)
@@ -71,22 +71,37 @@ class RotateTwoLaunchedAppsRotateAndEnterAppPairsMode(
SystemClock.sleep(AppPairsHelper.TIMEOUT_MS)
}
assertions {
layersTrace {
navBarLayerRotatesAndScales(Surface.ROTATION_0, configuration.endRotation,
enabled = !configuration.startRotation.isRotated())
statusBarLayerRotatesScales(Surface.ROTATION_0, configuration.endRotation)
appPairsDividerIsVisible()
appPairsPrimaryBoundsIsVisible(configuration.endRotation,
primaryApp.defaultWindowName, 172776659)
appPairsSecondaryBoundsIsVisible(configuration.endRotation,
secondaryApp.defaultWindowName, 172776659)
val isRotated = configuration.startRotation.isRotated()
presubmit {
layersTrace {
statusBarLayerRotatesScales(Surface.ROTATION_0,
configuration.endRotation)
appPairsDividerIsVisible()
if (!isRotated) {
navBarLayerRotatesAndScales(Surface.ROTATION_0,
configuration.endRotation)
}
}
windowManagerTrace {
navBarWindowIsAlwaysVisible()
statusBarWindowIsAlwaysVisible()
end("bothAppWindowsVisible") {
isVisible(primaryApp.defaultWindowName)
isVisible(secondaryApp.defaultWindowName)
}
}
}
windowManagerTrace {
navBarWindowIsAlwaysVisible()
statusBarWindowIsAlwaysVisible()
end("bothAppWindowsVisible") {
isVisible(primaryApp.defaultWindowName)
isVisible(secondaryApp.defaultWindowName)
flaky {
layersTrace {
appPairsPrimaryBoundsIsVisible(configuration.endRotation,
primaryApp.defaultWindowName, 172776659)
appPairsSecondaryBoundsIsVisible(configuration.endRotation,
secondaryApp.defaultWindowName, 172776659)
if (isRotated) {
navBarLayerRotatesAndScales(Surface.ROTATION_0,
configuration.endRotation)
}
}
}
}

View File

@@ -17,8 +17,11 @@
package com.android.server.wm.flicker
import android.platform.helpers.IAppHelper
import com.android.server.wm.flicker.dsl.EventLogAssertionBuilder
import com.android.server.wm.flicker.dsl.EventLogAssertionBuilderLegacy
import com.android.server.wm.flicker.dsl.LayersAssertionBuilder
import com.android.server.wm.flicker.dsl.LayersAssertionBuilderLegacy
import com.android.server.wm.flicker.dsl.WmAssertionBuilder
import com.android.server.wm.flicker.dsl.WmAssertionBuilderLegacy
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper.Companion.NAV_BAR_LAYER_NAME
@@ -31,115 +34,88 @@ const val DOCKED_STACK_DIVIDER = "DockedStackDivider"
const val WALLPAPER_TITLE = "Wallpaper"
@JvmOverloads
fun WmAssertionBuilderLegacy.statusBarWindowIsAlwaysVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("statusBarWindowIsAlwaysVisible", bugId, enabled) {
this.showsAboveAppWindow(STATUS_BAR_WINDOW_NAME)
fun WmAssertionBuilder.statusBarWindowIsAlwaysVisible(bugId: Int = 0) {
all("statusBarWindowIsAlwaysVisible", bugId) {
this.showsAboveAppWindow(NAV_BAR_LAYER_NAME)
}
}
@JvmOverloads
fun WmAssertionBuilderLegacy.navBarWindowIsAlwaysVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("navBarWindowIsAlwaysVisible", bugId, enabled) {
this.showsAboveAppWindow(NAV_BAR_WINDOW_NAME)
fun WmAssertionBuilder.navBarWindowIsAlwaysVisible(bugId: Int = 0) {
all("navBarWindowIsAlwaysVisible", bugId) {
this.showsAboveAppWindow(NAV_BAR_LAYER_NAME)
}
}
fun WmAssertionBuilderLegacy.visibleWindowsShownMoreThanOneConsecutiveEntry(
fun WmAssertionBuilder.visibleWindowsShownMoreThanOneConsecutiveEntry(
ignoreWindows: List<String> = emptyList(),
bugId: Int = 0,
enabled: Boolean = bugId == 0
bugId: Int = 0
) {
all("visibleWindowsShownMoreThanOneConsecutiveEntry", bugId, enabled) {
all("visibleWindowsShownMoreThanOneConsecutiveEntry", bugId) {
this.visibleWindowsShownMoreThanOneConsecutiveEntry(ignoreWindows)
}
}
fun WmAssertionBuilderLegacy.launcherReplacesAppWindowAsTopWindow(
testApp: IAppHelper,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("launcherReplacesAppWindowAsTopWindow", bugId, enabled) {
fun WmAssertionBuilder.launcherReplacesAppWindowAsTopWindow(testApp: IAppHelper, bugId: Int = 0) {
all("launcherReplacesAppWindowAsTopWindow", bugId) {
this.showsAppWindowOnTop(testApp.getPackage())
.then()
.showsAppWindowOnTop("Launcher")
}
}
fun WmAssertionBuilderLegacy.wallpaperWindowBecomesVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("wallpaperWindowBecomesVisible", bugId, enabled) {
fun WmAssertionBuilder.wallpaperWindowBecomesVisible(bugId: Int = 0) {
all("wallpaperWindowBecomesVisible", bugId) {
this.hidesBelowAppWindow(WALLPAPER_TITLE)
.then()
.showsBelowAppWindow(WALLPAPER_TITLE)
}
}
fun WmAssertionBuilderLegacy.wallpaperWindowBecomesInvisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("wallpaperWindowBecomesInvisible", bugId, enabled) {
fun WmAssertionBuilder.wallpaperWindowBecomesInvisible(bugId: Int = 0) {
all("wallpaperWindowBecomesInvisible", bugId) {
this.showsBelowAppWindow("Wallpaper")
.then()
.hidesBelowAppWindow("Wallpaper")
}
}
fun WmAssertionBuilderLegacy.appWindowAlwaysVisibleOnTop(
fun WmAssertionBuilder.appWindowAlwaysVisibleOnTop(
packageName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
bugId: Int = 0
) {
all("appWindowAlwaysVisibleOnTop", bugId, enabled) {
all("appWindowAlwaysVisibleOnTop", bugId) {
this.showsAppWindowOnTop(packageName)
}
}
fun WmAssertionBuilderLegacy.appWindowBecomesVisible(
appName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appWindowBecomesVisible", bugId, enabled) {
fun WmAssertionBuilder.appWindowBecomesVisible(appName: String, bugId: Int = 0) {
all("appWindowBecomesVisible", bugId) {
this.hidesAppWindow(appName)
.then()
.showsAppWindow(appName)
}
}
fun WmAssertionBuilderLegacy.appWindowBecomesInVisible(
appName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appWindowBecomesInVisible", bugId, enabled) {
fun WmAssertionBuilder.appWindowBecomesInVisible(appName: String, bugId: Int = 0) {
all("appWindowBecomesInVisible", bugId) {
this.showsAppWindow(appName)
.then()
.hidesAppWindow(appName)
.then()
.hidesAppWindow(appName)
}
}
@JvmOverloads
fun LayersAssertionBuilderLegacy.noUncoveredRegions(
fun LayersAssertionBuilder.noUncoveredRegions(
beginRotation: Int,
endRotation: Int = beginRotation,
allStates: Boolean = true,
bugId: Int = 0,
enabled: Boolean = bugId == 0
bugId: Int = 0
) {
val startingBounds = WindowUtils.getDisplayBounds(beginRotation)
val endingBounds = WindowUtils.getDisplayBounds(endRotation)
if (allStates) {
all("noUncoveredRegions", bugId, enabled) {
all("noUncoveredRegions", bugId) {
if (startingBounds == endingBounds) {
this.coversAtLeastRegion(startingBounds)
} else {
@@ -158,6 +134,284 @@ fun LayersAssertionBuilderLegacy.noUncoveredRegions(
}
}
@JvmOverloads
fun LayersAssertionBuilder.navBarLayerIsAlwaysVisible(
rotatesScreen: Boolean = false,
bugId: Int = 0
) {
if (rotatesScreen) {
all("navBarLayerIsAlwaysVisible", bugId) {
this.showsLayer(NAV_BAR_LAYER_NAME)
.then()
.hidesLayer(NAV_BAR_LAYER_NAME)
.then()
.showsLayer(NAV_BAR_LAYER_NAME)
}
} else {
all("navBarLayerIsAlwaysVisible", bugId) {
this.showsLayer(NAV_BAR_LAYER_NAME)
}
}
}
@JvmOverloads
fun LayersAssertionBuilder.statusBarLayerIsAlwaysVisible(
rotatesScreen: Boolean = false,
bugId: Int = 0
) {
if (rotatesScreen) {
all("statusBarLayerIsAlwaysVisible", bugId) {
this.showsLayer(STATUS_BAR_WINDOW_NAME)
.then()
hidesLayer(STATUS_BAR_WINDOW_NAME)
.then()
.showsLayer(STATUS_BAR_WINDOW_NAME)
}
} else {
all("statusBarLayerIsAlwaysVisible", bugId) {
this.showsLayer(STATUS_BAR_WINDOW_NAME)
}
}
}
@JvmOverloads
fun LayersAssertionBuilder.navBarLayerRotatesAndScales(
beginRotation: Int,
endRotation: Int = beginRotation,
bugId: Int = 0
) {
val startingPos = WindowUtils.getNavigationBarPosition(beginRotation)
val endingPos = WindowUtils.getNavigationBarPosition(endRotation)
start("navBarLayerRotatesAndScales_StartingPos", bugId) {
this.hasVisibleRegion(NAV_BAR_LAYER_NAME, startingPos)
}
end("navBarLayerRotatesAndScales_EndingPost", bugId) {
this.hasVisibleRegion(NAV_BAR_LAYER_NAME, endingPos)
}
/*if (startingPos == endingPos) {
all("navBarLayerRotatesAndScales", enabled = false, bugId = 167747321) {
this.hasVisibleRegion(NAVIGATION_BAR_WINDOW_TITLE, startingPos)
}
}*/
}
@JvmOverloads
fun LayersAssertionBuilder.statusBarLayerRotatesScales(
beginRotation: Int,
endRotation: Int = beginRotation,
bugId: Int = 0
) {
val startingPos = WindowUtils.getStatusBarPosition(beginRotation)
val endingPos = WindowUtils.getStatusBarPosition(endRotation)
start("statusBarLayerRotatesScales_StartingPos", bugId) {
this.hasVisibleRegion(STATUS_BAR_WINDOW_NAME, startingPos)
}
end("statusBarLayerRotatesScales_EndingPos", bugId) {
this.hasVisibleRegion(STATUS_BAR_WINDOW_NAME, endingPos)
}
}
fun LayersAssertionBuilder.visibleLayersShownMoreThanOneConsecutiveEntry(
ignoreLayers: List<String> = emptyList(),
bugId: Int = 0
) {
all("visibleLayersShownMoreThanOneConsecutiveEntry", bugId) {
this.visibleLayersShownMoreThanOneConsecutiveEntry(ignoreLayers)
}
}
fun LayersAssertionBuilder.appLayerReplacesWallpaperLayer(appName: String, bugId: Int = 0) {
all("appLayerReplacesWallpaperLayer", bugId) {
this.showsLayer("Wallpaper")
.then()
.replaceVisibleLayer("Wallpaper", appName)
}
}
fun LayersAssertionBuilder.wallpaperLayerReplacesAppLayer(testApp: IAppHelper, bugId: Int = 0) {
all("appLayerReplacesWallpaperLayer", bugId) {
this.showsLayer(testApp.getPackage())
.then()
.replaceVisibleLayer(testApp.getPackage(), WALLPAPER_TITLE)
}
}
fun LayersAssertionBuilder.layerAlwaysVisible(packageName: String, bugId: Int = 0) {
all("layerAlwaysVisible", bugId) {
this.showsLayer(packageName)
}
}
fun LayersAssertionBuilder.layerBecomesVisible(packageName: String, bugId: Int = 0) {
all("layerBecomesVisible", bugId) {
this.hidesLayer(packageName)
.then()
.showsLayer(packageName)
}
}
fun LayersAssertionBuilder.layerBecomesInvisible(packageName: String, bugId: Int = 0) {
all("layerBecomesInvisible", bugId) {
this.showsLayer(packageName)
.then()
.hidesLayer(packageName)
}
}
fun EventLogAssertionBuilder.focusChanges(vararg windows: String, bugId: Int = 0) {
all("focusChanges", bugId) {
this.focusChanges(windows)
}
}
fun EventLogAssertionBuilder.focusDoesNotChange(bugId: Int = 0) {
all("focusDoesNotChange", bugId) {
this.focusDoesNotChange()
}
}
@JvmOverloads
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.statusBarWindowIsAlwaysVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("statusBarWindowIsAlwaysVisible", bugId, enabled) {
this.showsAboveAppWindow(STATUS_BAR_WINDOW_NAME)
}
}
@JvmOverloads
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.navBarWindowIsAlwaysVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("navBarWindowIsAlwaysVisible", bugId, enabled) {
this.showsAboveAppWindow(NAV_BAR_WINDOW_NAME)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.visibleWindowsShownMoreThanOneConsecutiveEntry(
ignoreWindows: List<String> = emptyList(),
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("visibleWindowsShownMoreThanOneConsecutiveEntry", bugId, enabled) {
this.visibleWindowsShownMoreThanOneConsecutiveEntry(ignoreWindows)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.launcherReplacesAppWindowAsTopWindow(
testApp: IAppHelper,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("launcherReplacesAppWindowAsTopWindow", bugId, enabled) {
this.showsAppWindowOnTop(testApp.getPackage())
.then()
.showsAppWindowOnTop("Launcher")
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.wallpaperWindowBecomesVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("wallpaperWindowBecomesVisible", bugId, enabled) {
this.hidesBelowAppWindow(WALLPAPER_TITLE)
.then()
.showsBelowAppWindow(WALLPAPER_TITLE)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.wallpaperWindowBecomesInvisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("wallpaperWindowBecomesInvisible", bugId, enabled) {
this.showsBelowAppWindow("Wallpaper")
.then()
.hidesBelowAppWindow("Wallpaper")
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.appWindowAlwaysVisibleOnTop(
packageName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appWindowAlwaysVisibleOnTop", bugId, enabled) {
this.showsAppWindowOnTop(packageName)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.appWindowBecomesVisible(
appName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appWindowBecomesVisible", bugId, enabled) {
this.hidesAppWindow(appName)
.then()
.showsAppWindow(appName)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun WmAssertionBuilderLegacy.appWindowBecomesInVisible(
appName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appWindowBecomesInVisible", bugId, enabled) {
this.showsAppWindow(appName)
.then()
.hidesAppWindow(appName)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
@JvmOverloads
fun LayersAssertionBuilderLegacy.noUncoveredRegions(
beginRotation: Int,
endRotation: Int = beginRotation,
allStates: Boolean = true,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
val startingBounds = WindowUtils.getDisplayBounds(beginRotation)
val endingBounds = WindowUtils.getDisplayBounds(endRotation)
if (allStates) {
all("noUncoveredRegions", bugId, enabled) {
if (startingBounds == endingBounds) {
this.coversAtLeastRegion(startingBounds)
} else {
this.coversAtLeastRegion(startingBounds)
.then()
.coversAtLeastRegion(endingBounds)
}
}
} else {
start("noUncoveredRegions_StartingPos") {
this.coversAtLeastRegion(startingBounds)
}
end("noUncoveredRegions_EndingPos") {
this.coversAtLeastRegion(endingBounds)
}
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
@JvmOverloads
fun LayersAssertionBuilderLegacy.navBarLayerIsAlwaysVisible(
rotatesScreen: Boolean = false,
@@ -167,10 +421,10 @@ fun LayersAssertionBuilderLegacy.navBarLayerIsAlwaysVisible(
if (rotatesScreen) {
all("navBarLayerIsAlwaysVisible", bugId, enabled) {
this.showsLayer(NAV_BAR_LAYER_NAME)
.then()
.hidesLayer(NAV_BAR_LAYER_NAME)
.then()
.showsLayer(NAV_BAR_LAYER_NAME)
.then()
.hidesLayer(NAV_BAR_LAYER_NAME)
.then()
.showsLayer(NAV_BAR_LAYER_NAME)
}
} else {
all("navBarLayerIsAlwaysVisible", bugId, enabled) {
@@ -179,6 +433,7 @@ fun LayersAssertionBuilderLegacy.navBarLayerIsAlwaysVisible(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
@JvmOverloads
fun LayersAssertionBuilderLegacy.statusBarLayerIsAlwaysVisible(
rotatesScreen: Boolean = false,
@@ -188,10 +443,10 @@ fun LayersAssertionBuilderLegacy.statusBarLayerIsAlwaysVisible(
if (rotatesScreen) {
all("statusBarLayerIsAlwaysVisible", bugId, enabled) {
this.showsLayer(STATUS_BAR_LAYER_NAME)
.then()
hidesLayer(STATUS_BAR_LAYER_NAME)
.then()
.showsLayer(STATUS_BAR_LAYER_NAME)
.then()
.hidesLayer(STATUS_BAR_LAYER_NAME)
.then()
.showsLayer(STATUS_BAR_LAYER_NAME)
}
} else {
all("statusBarLayerIsAlwaysVisible", bugId, enabled) {
@@ -200,6 +455,7 @@ fun LayersAssertionBuilderLegacy.statusBarLayerIsAlwaysVisible(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
@JvmOverloads
fun LayersAssertionBuilderLegacy.navBarLayerRotatesAndScales(
beginRotation: Int,
@@ -224,6 +480,7 @@ fun LayersAssertionBuilderLegacy.navBarLayerRotatesAndScales(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
@JvmOverloads
fun LayersAssertionBuilderLegacy.statusBarLayerRotatesScales(
beginRotation: Int,
@@ -242,8 +499,9 @@ fun LayersAssertionBuilderLegacy.statusBarLayerRotatesScales(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun LayersAssertionBuilderLegacy.visibleLayersShownMoreThanOneConsecutiveEntry(
ignoreLayers: List<String> = emptyList(),
ignoreLayers: List<String> = kotlin.collections.emptyList(),
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
@@ -252,6 +510,7 @@ fun LayersAssertionBuilderLegacy.visibleLayersShownMoreThanOneConsecutiveEntry(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun LayersAssertionBuilderLegacy.appLayerReplacesWallpaperLayer(
appName: String,
bugId: Int = 0,
@@ -259,11 +518,12 @@ fun LayersAssertionBuilderLegacy.appLayerReplacesWallpaperLayer(
) {
all("appLayerReplacesWallpaperLayer", bugId, enabled) {
this.showsLayer("Wallpaper")
.then()
.replaceVisibleLayer("Wallpaper", appName)
.then()
.replaceVisibleLayer("Wallpaper", appName)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun LayersAssertionBuilderLegacy.wallpaperLayerReplacesAppLayer(
testApp: IAppHelper,
bugId: Int = 0,
@@ -271,11 +531,12 @@ fun LayersAssertionBuilderLegacy.wallpaperLayerReplacesAppLayer(
) {
all("appLayerReplacesWallpaperLayer", bugId, enabled) {
this.showsLayer(testApp.getPackage())
.then()
.replaceVisibleLayer(testApp.getPackage(), WALLPAPER_TITLE)
.then()
.replaceVisibleLayer(testApp.getPackage(), WALLPAPER_TITLE)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun LayersAssertionBuilderLegacy.layerAlwaysVisible(
packageName: String,
bugId: Int = 0,
@@ -286,6 +547,7 @@ fun LayersAssertionBuilderLegacy.layerAlwaysVisible(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun LayersAssertionBuilderLegacy.layerBecomesVisible(
packageName: String,
bugId: Int = 0,
@@ -293,11 +555,12 @@ fun LayersAssertionBuilderLegacy.layerBecomesVisible(
) {
all("layerBecomesVisible", bugId, enabled) {
this.hidesLayer(packageName)
.then()
.showsLayer(packageName)
.then()
.showsLayer(packageName)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun LayersAssertionBuilderLegacy.layerBecomesInvisible(
packageName: String,
bugId: Int = 0,
@@ -305,11 +568,12 @@ fun LayersAssertionBuilderLegacy.layerBecomesInvisible(
) {
all("layerBecomesInvisible", bugId, enabled) {
this.showsLayer(packageName)
.then()
.hidesLayer(packageName)
.then()
.hidesLayer(packageName)
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun EventLogAssertionBuilderLegacy.focusChanges(
vararg windows: String,
bugId: Int = 0,
@@ -320,6 +584,7 @@ fun EventLogAssertionBuilderLegacy.focusChanges(
}
}
@Deprecated("Move the assertion into one of the specific blocks (presubmit, postsubmit, flaky)")
fun EventLogAssertionBuilderLegacy.focusDoesNotChange(
bugId: Int = 0,
enabled: Boolean = bugId == 0

View File

@@ -43,7 +43,7 @@ fun Flicker.setRotation(rotation: Int) {
wmHelper.waitForAppTransitionIdle()
// Ensure WindowManagerService wait until all animations have completed
instrumentation.getUiAutomation().syncInputTransactions()
instrumentation.uiAutomation.syncInputTransactions()
} catch (e: RemoteException) {
throw RuntimeException(e)
}
@@ -71,8 +71,8 @@ fun buildTestTag(
/**
* Build a test tag for the test
* @param testName Name of the transition(s) being tested
* @param app App being launcher
* @param configuration Configuration for the test
* @param extraInfo Additional information to append to the tag
*
* @return test tag with pattern <NAME>__<APP>__<BEGIN_ROTATION>-<END_ROTATION>
</END_ROTATION></BEGIN_ROTATION></APP></NAME> */
@@ -90,11 +90,32 @@ fun buildTestTag(
extraInfo = extraInfo)
}
/**
* Build a test tag for the test
* @param configuration Configuration for the test
* @param extraInfo Additional information to append to the tag
*
* @return test tag with pattern <NAME>__<APP>__<BEGIN_ROTATION>-<END_ROTATION>
</END_ROTATION></BEGIN_ROTATION></APP></NAME> */
@JvmOverloads
fun buildTestTag(
configuration: Bundle,
extraInfo: String = ""
): String {
return buildTestTag(testName = null,
app = null,
beginRotation = configuration.startRotation,
endRotation = configuration.endRotation,
app2 = null,
extraInfo = extraInfo)
}
/**
* Build a test tag for the test
* @param testName Name of the transition(s) being tested
* @param app App being launcher
* @param configuration Configuration for the test
* @param extraInfo Additional information to append to the tag
*
* @return test tag with pattern <NAME>__<APP>__<BEGIN_ROTATION>-<END_ROTATION>
</END_ROTATION></BEGIN_ROTATION></APP></NAME> */
@@ -121,14 +142,17 @@ fun buildTestTag(
* @return test tag with pattern <NAME>__<APP></APP>(S)>__<ROTATION></ROTATION>(S)>[__<EXTRA>]
</EXTRA></NAME> */
fun buildTestTag(
testName: String,
testName: String?,
app: String?,
beginRotation: Int,
endRotation: Int,
app2: String?,
extraInfo: String
): String {
var testTag = testName
var testTag = ""
if (testName != null) {
testTag += testName
}
if (app != null) {
testTag += "__$app"
}
@@ -142,5 +166,9 @@ fun buildTestTag(
if (extraInfo.isNotEmpty()) {
testTag += "__$extraInfo"
}
if (testTag.startsWith("__")) {
testTag = testTag.drop(2)
}
return testTag
}