diff options
| author | 2025-02-20 18:54:45 +0000 | |
|---|---|---|
| committer | 2025-02-21 11:04:22 +0000 | |
| commit | 187cdb2ede1b0fca172ac9dfc57ac2f320951132 (patch) | |
| tree | db45e01e951e13a0f30422d0b0b076f8fcdfb2d9 | |
| parent | fa964f7b92953e7560db46fee4bd0b8947b59424 (diff) | |
[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
4 files changed, 29 insertions, 4 deletions
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt index 2e63c4f51792..e00bdca7e041 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt @@ -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) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTestHelpers.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTestHelpers.kt index 8b6cafb10df4..c00083b0607f 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTestHelpers.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTestHelpers.kt @@ -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") + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt index 9cb2a055e45d..143d232013fc 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt @@ -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) + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt index d8d45c02b364..16c793587ade 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt @@ -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 |