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

Commit 5ebf3c92 authored by Chilun Huang's avatar Chilun Huang Committed by Android (Google) Code Review
Browse files

Merge "Fix the validation of layer switch for tablet"

parents 0d637145 9837bd5a
Loading
Loading
Loading
Loading
+28 −7
Original line number Diff line number Diff line
@@ -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 {
                return@add primaryAppWindow.frame.bottom <= secondaryAppWindow.frame.top
                    primaryAppWindow.frame.right <= secondaryAppWindow.frame.left
                }
            } else {
                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 if (testSpec.isTablet) {
                    primaryVisibleRegion.bottom <= secondaryVisibleRegion.top
                } else {
                return@add primaryVisibleRegion.bottom <= secondaryVisibleRegion.top
                    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