From 9837bd5a265fd6ad832abe42cc036d67110d4203 Mon Sep 17 00:00:00 2001 From: Chilun Huang Date: Thu, 13 Oct 2022 20:01:52 +0800 Subject: [PATCH] Fix the validation of layer switch for tablet The default split direction of tablet is different from phone. We can't use "isRotated" to determine the split direction. Bug: 249028038 Test: atest WMShellFlickerTests:SwitchAppByDoubleTapDivider Change-Id: I11707b2433fe47608c387d8d8583263b725317f3 --- .../SwitchAppByDoubleTapDivider.kt | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt index 813ac5dad82b2..84a8c0a59f325 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt @@ -26,7 +26,7 @@ import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.dsl.FlickerBuilder -import com.android.server.wm.flicker.helpers.isRotated +import com.android.server.wm.flicker.helpers.WindowUtils import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd @@ -79,10 +79,18 @@ class SwitchAppByDoubleTapDivider(testSpec: FlickerTestParameter) : SplitScreenB secondaryApp.windowMatchesAnyOf(window) } ?: return@add false - if (testSpec.startRotation.isRotated()) { - return@add primaryAppWindow.frame.right <= secondaryAppWindow.frame.left + if (isLandscape(testSpec.endRotation)) { + return@add if (testSpec.isTablet) { + secondaryAppWindow.frame.right <= primaryAppWindow.frame.left + } else { + primaryAppWindow.frame.right <= secondaryAppWindow.frame.left + } } else { - return@add primaryAppWindow.frame.bottom <= secondaryAppWindow.frame.top + return@add if (testSpec.isTablet) { + primaryAppWindow.frame.bottom <= secondaryAppWindow.frame.top + } else { + primaryAppWindow.frame.bottom <= secondaryAppWindow.frame.top + } } }.waitForAndVerify() } @@ -101,14 +109,27 @@ class SwitchAppByDoubleTapDivider(testSpec: FlickerTestParameter) : SplitScreenB val secondaryVisibleRegion = secondaryAppLayer.visibleRegion?.bounds ?: return@add false - if (testSpec.startRotation.isRotated()) { - return@add primaryVisibleRegion.right <= secondaryVisibleRegion.left + if (isLandscape(testSpec.endRotation)) { + return@add if (testSpec.isTablet) { + secondaryVisibleRegion.right <= primaryVisibleRegion.left + } else { + primaryVisibleRegion.right <= secondaryVisibleRegion.left + } } else { - return@add primaryVisibleRegion.bottom <= secondaryVisibleRegion.top + return@add if (testSpec.isTablet) { + primaryVisibleRegion.bottom <= secondaryVisibleRegion.top + } else { + primaryVisibleRegion.bottom <= secondaryVisibleRegion.top + } } }.waitForAndVerify() } + private fun isLandscape(rotation: Int): Boolean { + val displayBounds = WindowUtils.getDisplayBounds(rotation) + return displayBounds.width > displayBounds.height + } + @IwTest(focusArea = "sysui") @Presubmit @Test