Fix Test supporting HSUM

Flag: EXEMPT Test fix
Fix: 403558856
Test: atest NexusLauncherTests:com.android.quickstep.DesktopSystemShortcutTest

Change-Id: I2a2ff6bc4cee978267ec19fca32bc1f7f80b1bbd
This commit is contained in:
Massimo Carli
2025-03-14 09:59:12 +00:00
parent 57f0e8ebe6
commit dab2e17122
@@ -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
@@ -45,6 +47,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
@@ -55,6 +58,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
@@ -75,12 +80,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 {
assertThat(shortcuts).isNull()
}
@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() {
@@ -163,8 +226,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(
@@ -264,4 +327,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
}
}