From dab2e17122aba885dee0e0ea7809ca941ea80888 Mon Sep 17 00:00:00 2001 From: Massimo Carli Date: Fri, 14 Mar 2025 09:59:12 +0000 Subject: Fix Test supporting HSUM Flag: EXEMPT Test fix Fix: 403558856 Test: atest NexusLauncherTests:com.android.quickstep.DesktopSystemShortcutTest Change-Id: I2a2ff6bc4cee978267ec19fca32bc1f7f80b1bbd --- .../android/quickstep/DesktopSystemShortcutTest.kt | 90 +++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) (limited to 'quickstep') diff --git a/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt b/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt index 746f8bb98e..f211447efb 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 @@ -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 + } } -- cgit v1.2.3-59-g8ed1b