summaryrefslogtreecommitdiff
path: root/quickstep
diff options
context:
space:
mode:
author Massimo Carli <mcarli@google.com> 2025-03-24 07:47:17 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-24 07:47:17 -0700
commit2d70081aa5cf087e1e91d26e51000f7705e8993e (patch)
tree19868c16b1ce50558228ea3825c0cb994f63e354 /quickstep
parent1d5064b8dc0670afa28791cebfec6bb468e98e3e (diff)
parentdab2e17122aba885dee0e0ea7809ca941ea80888 (diff)
Merge "Fix Test supporting HSUM" into main
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt90
1 files changed, 88 insertions, 2 deletions
diff --git a/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt b/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt
index 5f61ba2e07..8a2393d539 100644
--- a/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt
+++ b/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt
@@ -16,9 +16,11 @@
package com.android.quickstep
+import android.Manifest.permission.SYSTEM_ALERT_WINDOW
import android.content.ComponentName
import android.content.Context
import android.content.Intent
+import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
@@ -44,6 +46,7 @@ import com.android.quickstep.views.TaskContainer
import com.android.quickstep.views.TaskThumbnailViewDeprecated
import com.android.quickstep.views.TaskView
import com.android.quickstep.views.TaskViewIcon
+import com.android.quickstep.views.TaskViewType
import com.android.systemui.shared.recents.model.Task
import com.android.systemui.shared.recents.model.Task.TaskKey
import com.android.window.flags.Flags
@@ -54,6 +57,8 @@ import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mockito.`when`
import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
@@ -74,12 +79,12 @@ class DesktopSystemShortcutTest {
private val statsLogManager: StatsLogManager = mock()
private val statsLogger: StatsLogManager.StatsLogger = mock()
private val recentsView: LauncherRecentsView = mock()
- private val taskView: TaskView = mock()
private val abstractFloatingViewHelper: AbstractFloatingViewHelper = mock()
private val overlayFactory: TaskOverlayFactory = mock()
private val factory: TaskShortcutFactory =
DesktopSystemShortcut.createFactory(abstractFloatingViewHelper)
private val context: Context = spy(InstrumentationRegistry.getInstrumentation().targetContext)
+ private val taskView: TaskView = createTaskViewMock()
private lateinit var mockitoSession: StaticMockitoSession
@@ -135,6 +140,64 @@ class DesktopSystemShortcutTest {
}
@Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
+ Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION,
+ )
+ fun createDesktopTaskShortcutFactoryPermissionEnabledAllowed_transparentTask() {
+ val packageManager: PackageManager = mock()
+ setUpTransparentPermission(packageManager, isAllowed = true)
+ val baseComponent = ComponentName("", /* class */ "")
+ val taskKey =
+ TaskKey(
+ /* id */ 1,
+ /* windowingMode */ 0,
+ Intent(),
+ baseComponent,
+ /* userId */ 0,
+ /* lastActiveTime */ 2000,
+ DEFAULT_DISPLAY,
+ baseComponent,
+ /* numActivities */ 1,
+ /* isTopActivityNoDisplay */ false,
+ /* isActivityStackTransparent */ true,
+ )
+ val taskContainer = createTaskContainer(Task(taskKey))
+ val shortcuts = factory.getShortcuts(launcher, taskContainer)
+ assertThat(shortcuts).isNull()
+ }
+
+ @Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
+ Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION,
+ )
+ fun createDesktopTaskShortcutFactoryPermissionEnabledNotAllowed_transparentTask() {
+ val packageManager: PackageManager = mock()
+ setUpTransparentPermission(packageManager, isAllowed = false)
+ val baseComponent = ComponentName("", /* class */ "")
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+ val taskKey =
+ TaskKey(
+ /* id */ 1,
+ /* windowingMode */ 0,
+ Intent(),
+ baseComponent,
+ /* userId */ 0,
+ /* lastActiveTime */ 2000,
+ DEFAULT_DISPLAY,
+ baseComponent,
+ /* numActivities */ 1,
+ /* isTopActivityNoDisplay */ false,
+ /* isActivityStackTransparent */ true,
+ )
+ val taskContainer = createTaskContainer(Task(taskKey).apply { isDockable = true })
+ val shortcuts = factory.getShortcuts(launcher, taskContainer)
+ assertThat(shortcuts).isNotEmpty()
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
fun createDesktopTaskShortcutFactory_systemUiTask() {
val sysUiPackageName: String = context.resources.getString(R.string.config_systemUi)
@@ -162,8 +225,8 @@ class DesktopSystemShortcutTest {
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
fun createDesktopTaskShortcutFactory_defaultHomeTask() {
val packageManager: PackageManager = mock()
- val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
whenever(context.packageManager).thenReturn(packageManager)
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
val taskKey =
TaskKey(
@@ -262,4 +325,27 @@ class DesktopSystemShortcutTest {
showWindowsView = null,
overlayFactory,
)
+
+ private fun setUpTransparentPermission(packageManager: PackageManager, isAllowed: Boolean) {
+ val packageInfo: PackageInfo = mock()
+ if (isAllowed) {
+ packageInfo.requestedPermissions = arrayOf(SYSTEM_ALERT_WINDOW)
+ }
+ whenever(context.packageManager).thenReturn(packageManager)
+ whenever(
+ packageManager.getPackageInfoAsUser(
+ anyString(),
+ eq(PackageManager.GET_PERMISSIONS),
+ anyInt(),
+ )
+ )
+ .thenReturn(packageInfo)
+ }
+
+ private fun createTaskViewMock(): TaskView {
+ val taskView: TaskView = mock()
+ whenever(taskView.type).thenReturn(TaskViewType.SINGLE)
+ whenever(taskView.context).thenReturn(context)
+ return taskView
+ }
}