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

Commit e1fee322 authored by Charles Chen's avatar Charles Chen Committed by Android (Google) Code Review
Browse files

Merge "Revert "Add flicker tests to verify non-match parent on exit PIP"" into main

parents 4abe5c37 7d4363e1
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -266,26 +266,5 @@ test_module_config {
    test_suites: ["device-tests"],
}

test_module_config {
    name: "WMShellFlickerTestsPip-nonMatchParent",
    base: "WMShellFlickerTestsPip",
    include_filters: ["com.android.wm.shell.flicker.pip.nonmatchparent.*"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "WMShellFlickerTestsPip-BottomHalfExitPipToAppViaExpandButtonTest",
    base: "WMShellFlickerTestsPip",
    include_filters: ["com.android.wm.shell.flicker.pip.nonmatchparent.BottomHalfExitPipToAppViaExpandButtonTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "WMShellFlickerTestsPip-BottomHalfExitPipToAppViaIntentTest",
    base: "WMShellFlickerTestsPip",
    include_filters: ["com.android.wm.shell.flicker.pip.nonmatchparent.BottomHalfExitPipToAppViaIntentTest"],
    test_suites: ["device-tests"],
}

// End breakdowns for WMShellFlickerTestsPip module
////////////////////////////////////////////////////////////////////////////////
+1 −5
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ abstract class PipTransition(flicker: LegacyFlickerTest) : BaseTest(flicker) {
    @Rule
    val checkFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()

    protected val pipApp = PipAppHelper(instrumentation)
    protected val displayBounds = WindowUtils.getDisplayBounds(flicker.scenario.startRotation)
    protected val broadcastActionTrigger = BroadcastActionTrigger(instrumentation)

@@ -62,11 +63,6 @@ abstract class PipTransition(flicker: LegacyFlickerTest) : BaseTest(flicker) {
        }
    }

    /**
     * Defines the test app to run PIP flicker test.
     */
    protected open val pipApp = PipAppHelper(instrumentation)

    /** Defines the transition used to run the test */
    protected open val thisTransition: FlickerBuilder.() -> Unit = {}

+0 −99
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.wm.shell.flicker.pip.nonmatchparent

import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.RequiresFlagsDisabled
import android.platform.test.annotations.RequiresFlagsEnabled
import android.tools.flicker.legacy.LegacyFlickerTest
import android.tools.traces.component.ComponentNameMatcher
import com.android.server.wm.flicker.helpers.BottomHalfPipAppHelper
import com.android.server.wm.flicker.helpers.PipAppHelper
import com.android.window.flags.Flags
import com.android.wm.shell.flicker.pip.common.ExitPipToAppTransition
import org.junit.Test

/**
 * Base test class to verify PIP exit animation with an activity layout to the bottom half of
 * the container.
 */
// TODO(b/380796448): re-enable tests after the support of non-match parent PIP animation for PIP2.
@RequiresFlagsDisabled(com.android.wm.shell.Flags.FLAG_ENABLE_PIP2)
@RequiresFlagsEnabled(Flags.FLAG_BETTER_SUPPORT_NON_MATCH_PARENT_ACTIVITY)
abstract class BottomHalfExitPipToAppTransition(flicker: LegacyFlickerTest) :
    ExitPipToAppTransition(flicker) {

    override val pipApp: PipAppHelper = BottomHalfPipAppHelper(instrumentation)

    @Presubmit
    @Test
    override fun showBothAppLayersThenHidePip() {
        // Disabled since the BottomHalfPipActivity just covers half of the simple activity.
    }

    @Presubmit
    @Test
    override fun showBothAppWindowsThenHidePip() {
        // Disabled since the BottomHalfPipActivity just covers half of the simple activity.
    }

    @Presubmit
    @Test
    override fun pipAppCoversFullScreenAtEnd() {
        // Disabled since the BottomHalfPipActivity just covers half of the simple activity.
    }

    /**
     * Checks that the [testApp] and [pipApp] are always visible since the [pipApp] only covers
     * half of screen.
     */
    @Presubmit
    @Test
    fun showBothAppLayersDuringPipTransition() {
        flicker.assertLayers {
            isVisible(testApp)
                .isVisible(pipApp.or(ComponentNameMatcher.TRANSITION_SNAPSHOT))
        }
    }

    /**
     * Checks that the [testApp] and [pipApp] are always visible since the [pipApp] only covers
     * half of screen.
     */
    @Presubmit
    @Test
    fun showBothAppWindowsDuringPipTransition() {
        flicker.assertWm {
            isAppWindowVisible(testApp)
                .isAppWindowOnTop(pipApp)
                .isAppWindowVisible(pipApp)
        }
    }

    /**
     * Verify that the [testApp] and [pipApp] covers the entire screen at the end of PIP exit
     * animation since the [pipApp] will use a bottom half layout.
     */
    @Presubmit
    @Test
    fun testPlusPipAppCoversWindowFrameAtEnd() {
        flicker.assertLayersEnd {
            val pipRegion = visibleRegion(pipApp).region
            visibleRegion(testApp).plus(pipRegion).coversExactly(displayBounds)
        }
    }
}
 No newline at end of file
+0 −70
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.wm.shell.flicker.pip.nonmatchparent

import android.tools.flicker.junit.FlickerParametersRunnerFactory
import android.tools.flicker.legacy.FlickerBuilder
import android.tools.flicker.legacy.LegacyFlickerTest
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
import org.junit.runners.Parameterized

/**
 * Test expanding a pip window back to bottom half layout via the expand button
 *
 * To run this test: `atest WMShellFlickerTestsPip:BottomHalfExitPipToAppViaExpandButtonTest`
 *
 * Actions:
 * ```
 *     Launch an app in pip mode [bottomHalfPipApp],
 *     Launch another full screen mode [testApp]
 *     Expand [bottomHalfPipApp] app to bottom half layout by clicking on the pip window and
 *     then on the expand button
 * ```
 *
 * Notes:
 * ```
 *     1. Some default assertions (e.g., nav bar, status bar and screen covered)
 *        are inherited [PipTransition]
 *     2. Part of the test setup occurs automatically via
 *        [android.tools.flicker.legacy.runner.TransitionRunner],
 *        including configuring navigation mode, initial orientation and ensuring no
 *        apps are running before setup
 * ```
 */
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
class BottomHalfExitPipToAppViaExpandButtonTest(flicker: LegacyFlickerTest) :
    BottomHalfExitPipToAppTransition(flicker)
{
    override val thisTransition: FlickerBuilder.() -> Unit = {
        setup {
            // launch an app behind the pip one
            testApp.launchViaIntent(wmHelper)
        }
        transitions {
            // This will bring PipApp to fullscreen
            pipApp.expandPipWindowToApp(wmHelper)
            // Wait until the transition idle and test and pip app still shows.
            wmHelper.StateSyncBuilder().withLayerVisible(testApp).withLayerVisible(pipApp)
                .withAppTransitionIdle().waitForAndVerify()
        }
    }
}
 No newline at end of file
+0 −68
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.wm.shell.flicker.pip.nonmatchparent

import android.tools.flicker.junit.FlickerParametersRunnerFactory
import android.tools.flicker.legacy.FlickerBuilder
import android.tools.flicker.legacy.LegacyFlickerTest
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
import org.junit.runners.Parameterized

/**
 * Test expanding a pip window back to bottom half layout via an intent
 *
 * To run this test: `atest WMShellFlickerTestsPip:BottomHalfExitPipToAppViaIntentTest`
 *
 * Actions:
 * ```
 *     Launch an app in pip mode [bottomHalfPipApp],
 *     Launch another full screen mode [testApp]
 *     Expand [bottomHalfPipApp] app to bottom half layout via an intent
 * ```
 *
 * Notes:
 * ```
 *     1. Some default assertions (e.g., nav bar, status bar and screen covered)
 *        are inherited from [PipTransition]
 *     2. Part of the test setup occurs automatically via
 *        [android.tools.flicker.legacy.runner.TransitionRunner],
 *        including configuring navigation mode, initial orientation and ensuring no
 *        apps are running before setup
 * ```
 */
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
class BottomHalfExitPipToAppViaIntentTest(flicker: LegacyFlickerTest) :
    BottomHalfExitPipToAppTransition(flicker)
{
    override val thisTransition: FlickerBuilder.() -> Unit = {
        setup {
            // launch an app behind the pip one
            testApp.launchViaIntent(wmHelper)
        }
        transitions {
            // This will bring PipApp to fullscreen
            pipApp.exitPipToFullScreenViaIntent(wmHelper)
            // Wait until the transition idle and test and pip app still shows.
            wmHelper.StateSyncBuilder().withLayerVisible(testApp).withLayerVisible(pipApp)
                .withAppTransitionIdle().waitForAndVerify()
        }
    }
}
 No newline at end of file
Loading