summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Massimo Carli <mcarli@google.com> 2025-02-20 18:54:45 +0000
committer Massimo Carli <mcarli@google.com> 2025-02-21 11:04:22 +0000
commit187cdb2ede1b0fca172ac9dfc57ac2f320951132 (patch)
treedb45e01e951e13a0f30422d0b0b076f8fcdfb2d9
parentfa964f7b92953e7560db46fee4bd0b8947b59424 (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
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTestHelpers.kt7
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt21
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt1
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