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

Commit eb9aa395 authored by Vania Desmonda's avatar Vania Desmonda
Browse files

Add flicker test for maximizing window using keyboard shortcuts.

Bug: 375400066
Flag: com.android.window.flags.enable_task_resizing_keyboard_shortcuts
Test: atest MaximizeAppWithKeyboard
Change-Id: I5a09c672f439f971a9b0246907ffc950a6a2ecd7
parent c974fe0a
Loading
Loading
Loading
Loading
+50 −0
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

import android.tools.Rotation.ROTATION_90
import android.tools.flicker.FlickerConfig
import android.tools.flicker.annotation.ExpectedScenarios
import android.tools.flicker.annotation.FlickerConfigProvider
import android.tools.flicker.config.FlickerConfig
import android.tools.flicker.config.FlickerServiceConfig
import android.tools.flicker.junit.FlickerServiceJUnit4ClassRunner
import com.android.wm.shell.flicker.DesktopModeFlickerScenarios.Companion.MAXIMIZE_APP
import com.android.wm.shell.scenarios.MaximizeAppWindow
import org.junit.Test
import org.junit.runner.RunWith

/**
 * Maximize app window by pressing META + = on the keyboard.
 *
 * Assert that the app window keeps the same increases in size, filling the vertical and horizontal
 * stable display bounds.
 */
@RunWith(FlickerServiceJUnit4ClassRunner::class)
class MaximizeAppWithKeyboard : MaximizeAppWindow(rotation = ROTATION_90, usingKeyboard = true) {
    @ExpectedScenarios(["MAXIMIZE_APP"])
    @Test
    override fun maximizeAppWindow() = super.maximizeAppWindow()


    companion object {
        @JvmStatic
        @FlickerConfigProvider
        fun flickerConfigProvider(): FlickerConfig =
            FlickerConfig().use(FlickerServiceConfig.DEFAULT).use(MAXIMIZE_APP)
    }
}
 No newline at end of file
+9 −3
Original line number Diff line number Diff line
@@ -38,8 +38,11 @@ import org.junit.Test

@Ignore("Test Base Class")
abstract class MaximizeAppWindow
constructor(private val rotation: Rotation = Rotation.ROTATION_0, isResizable: Boolean = true) {

constructor(
    private val rotation: Rotation = Rotation.ROTATION_0,
    isResizable: Boolean = true,
    private val usingKeyboard: Boolean = false
) {
    private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
    private val tapl = LauncherInstrumentation()
    private val wmHelper = WindowManagerStateHelper(instrumentation)
@@ -55,6 +58,9 @@ constructor(private val rotation: Rotation = Rotation.ROTATION_0, isResizable: B
    @Before
    fun setup() {
        Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet)
        if (usingKeyboard) {
            Assume.assumeTrue(Flags.enableTaskResizingKeyboardShortcuts())
        }
        tapl.setEnableRotation(true)
        tapl.setExpectedRotation(rotation.value)
        ChangeDisplayOrientationRule.setRotation(rotation)
@@ -63,7 +69,7 @@ constructor(private val rotation: Rotation = Rotation.ROTATION_0, isResizable: B

    @Test
    open fun maximizeAppWindow() {
        testApp.maximiseDesktopApp(wmHelper, device)
        testApp.maximiseDesktopApp(wmHelper, device, usingKeyboard = usingKeyboard)
    }

    @After
+3 −0
Original line number Diff line number Diff line
@@ -61,6 +61,9 @@ constructor(
    fun setup() {
        Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet)
        Assume.assumeTrue(Flags.enableMinimizeButton())
        if (usingKeyboard) {
            Assume.assumeTrue(Flags.enableTaskResizingKeyboardShortcuts())
        }
        tapl.setEnableRotation(true)
        tapl.setExpectedRotation(rotation.value)
        ChangeDisplayOrientationRule.setRotation(rotation)
+14 −4
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.tools.device.apphelpers.IStandardAppHelper
import android.tools.helpers.SYSTEMUI_PACKAGE
import android.tools.traces.parsers.WindowManagerStateHelper
import android.tools.traces.wm.WindowingMode
import android.view.KeyEvent.KEYCODE_EQUALS
import android.view.KeyEvent.KEYCODE_LEFT_BRACKET
import android.view.KeyEvent.KEYCODE_MINUS
import android.view.KeyEvent.KEYCODE_RIGHT_BRACKET
@@ -147,10 +148,19 @@ open class DesktopModeAppHelper(private val innerHelper: IStandardAppHelper) :
    }

    /** Click maximise button on the app header for the given app. */
    fun maximiseDesktopApp(wmHelper: WindowManagerStateHelper, device: UiDevice) {
    fun maximiseDesktopApp(
        wmHelper: WindowManagerStateHelper,
        device: UiDevice,
        usingKeyboard: Boolean = false
    ) {
        if (usingKeyboard) {
            val keyEventHelper = KeyEventHelper(getInstrumentation())
            keyEventHelper.press(KEYCODE_EQUALS, META_META_ON)
        } else {
            val caption = getCaptionForTheApp(wmHelper, device)
            val maximizeButton = getMaximizeButtonForTheApp(caption)
            maximizeButton.click()
        }
        wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify()
    }