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

Commit 187cdb2e authored by Massimo Carli's avatar Massimo Carli
Browse files

[2/n] Fix Tests for Fullscreen activities with permission

Flag: com.android.window.flags.enable_modals_fullscreen_with_permission
Bug: 394714626
Test: atest WMShellUnitTests:SystemModalsTransitionHandlerTest
Test: atest WMShellUnitTests:DesktopTasksControllerTest
Test: atest WMShellUnitTests:DesktopModeWindowDecorViewModelTests.

Change-Id: I6dee3d84dcfd4cdd219a1e85409eb73bd640ab2f
parent fa964f7b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1675,6 +1675,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
    @DisableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION)
    fun moveRunningTaskToDesktop_topActivityTranslucentWithDisplay_doesNothing() {
        val task =
            setUpFullscreenTask().apply {
@@ -3712,6 +3713,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
    @DisableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION)
    fun handleRequest_topActivityTransparentWithDisplay_returnSwitchToFullscreenWCT() {
        val freeformTask = setUpFreeformTask()
        markTaskVisible(freeformTask)
@@ -3733,6 +3735,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
        Flags.FLAG_INCLUDE_TOP_TRANSPARENT_FULLSCREEN_TASK_IN_DESKTOP_HEURISTIC,
    )
    @DisableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION)
    fun handleRequest_topActivityTransparentWithDisplay_savedToDesktopRepository() {
        val freeformTask = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
        markTaskVisible(freeformTask)
@@ -3754,6 +3757,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
        Flags.FLAG_INCLUDE_TOP_TRANSPARENT_FULLSCREEN_TASK_IN_DESKTOP_HEURISTIC,
    )
    @DisableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION)
    fun handleRequest_desktopNotShowing_topTransparentFullscreenTask_notSavedToDesktopRepository() {
        val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)

+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD
import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
import android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN
import android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW
import android.content.ComponentName
import android.graphics.Rect
import android.view.Display.DEFAULT_DISPLAY
import com.android.wm.shell.MockToken
@@ -84,4 +85,10 @@ object DesktopTestHelpers {
    /** Create a new System Modal task, i.e. a task with only transparent activities. */
    fun createSystemModalTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo =
        createSystemModalTaskBuilder(displayId).build()

    /** Create a new System Modal task with a base Activity. */
    fun createSystemModalTaskWithBaseActivity() =
        createSystemModalTask().apply {
            baseActivity = ComponentName("com.test.dummypackage", "TestClass")
        }
}
+17 −4
Original line number Diff line number Diff line
@@ -16,8 +16,10 @@

package com.android.wm.shell.desktopmode.compatui

import android.Manifest.permission.SYSTEM_ALERT_WINDOW
import android.content.ComponentName
import android.content.Intent
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.Binder
import android.testing.AndroidTestingRunner
@@ -34,6 +36,7 @@ import com.android.wm.shell.desktopmode.DesktopTestHelpers.createFullscreenTask
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createFullscreenTaskBuilder
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createSystemModalTask
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createSystemModalTaskBuilder
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createSystemModalTaskWithBaseActivity
import com.android.wm.shell.desktopmode.DesktopUserRepositories
import com.android.wm.shell.desktopmode.DesktopWallpaperActivity
import com.android.wm.shell.shared.desktopmode.DesktopModeCompatPolicy
@@ -46,7 +49,9 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString
import org.mockito.kotlin.any
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
@@ -85,6 +90,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {
        whenever(packageManager.getHomeActivities(ArrayList())).thenReturn(componentName)
        desktopModeCompatPolicy = DesktopModeCompatPolicy(spyContext)
        transitionHandler = createTransitionHandler()
        allowOverlayPermission(arrayOf(SYSTEM_ALERT_WINDOW))
    }

    private fun createTransitionHandler() =
@@ -108,7 +114,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {
        whenever(desktopUserRepositories.current.getVisibleTaskCount(anyInt())).thenReturn(1)
        val info =
            TransitionInfoBuilder(TRANSIT_OPEN)
                .addChange(TRANSIT_OPEN, createSystemModalTask())
                .addChange(TRANSIT_OPEN, createSystemModalTaskWithBaseActivity())
                .build()

        assertThat(transitionHandler.startAnimation(Binder(), info, startT, finishT) {}).isTrue()
@@ -118,7 +124,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {
    fun startAnimation_launchingSystemModal_animates() {
        val info =
            TransitionInfoBuilder(TRANSIT_OPEN)
                .addChange(TRANSIT_OPEN, createSystemModalTask())
                .addChange(TRANSIT_OPEN, createSystemModalTaskWithBaseActivity())
                .build()

        assertThat(transitionHandler.startAnimation(Binder(), info, startT, finishT) {}).isTrue()
@@ -161,7 +167,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {
    fun startAnimation_closingSystemModal_animates() {
        val info =
            TransitionInfoBuilder(TRANSIT_CLOSE)
                .addChange(TRANSIT_CLOSE, createSystemModalTask())
                .addChange(TRANSIT_CLOSE, createSystemModalTaskWithBaseActivity())
                .build()

        assertThat(transitionHandler.startAnimation(Binder(), info, startT, finishT) {}).isTrue()
@@ -179,7 +185,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {

    @Test
    fun startAnimation_closingPreviouslyLaunchedSystemModal_animates() {
        val systemModalTask = createSystemModalTask()
        val systemModalTask = createSystemModalTaskWithBaseActivity()
        val nonModalSystemModalTask =
            createFullscreenTaskBuilder().setTaskId(systemModalTask.taskId).build()
        val launchInfo =
@@ -193,4 +199,11 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {
        assertThat(transitionHandler.startAnimation(Binder(), closeInfo, startT, finishT) {})
            .isTrue()
    }

    fun allowOverlayPermission(permissions: Array<String>) {
        val packageInfo = mock<PackageInfo>()
        packageInfo.requestedPermissions = permissions
        whenever(packageManager.getPackageInfo(anyString(), eq(PackageManager.GET_PERMISSIONS)))
            .thenReturn(packageInfo)
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -278,6 +278,7 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
    @DisableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION)
    fun testDecorationIsNotCreatedForTopTranslucentActivities() {
        val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN).apply {
            isActivityStackTransparent = true