Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt +12 −8 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ class DesktopModeCompatPolicy(private val context: Context) { get() = context.getPackageManager() private val defaultHomePackage: String? get() = pkgManager.getHomeActivities(ArrayList())?.packageName private val packageInfoCache = mutableMapOf<String, Boolean>() /** * If the top activity should be exempt from desktop windowing and forced back to fullscreen. Loading Loading @@ -94,7 +96,8 @@ class DesktopModeCompatPolicy(private val context: Context) { if (packageName == null) { return false } return try { return packageInfoCache.getOrPut(packageName) { try { val packageInfo = pkgManager.getPackageInfo( packageName, PackageManager.GET_PERMISSIONS Loading @@ -104,6 +107,7 @@ class DesktopModeCompatPolicy(private val context: Context) { false // Package not found } } } // If the flag is disabled we make this condition neutral. return true } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt +28 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import org.mockito.ArgumentMatchers.anyString import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever /** Loading Loading @@ -110,6 +112,32 @@ class DesktopModeCompatPolicyTest : ShellTestCase() { })) } @Test @EnableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION) fun testIsTopActivityExemptCachedPermissionCheckIsUsed() { allowOverlayPermission(arrayOf()) assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing( createFreeformTask(/* displayId */ 0) .apply { isActivityStackTransparent = true isTopActivityNoDisplay = false numActivities = 1 baseActivity = baseActivityTest })) assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing( createFreeformTask(/* displayId */ 0) .apply { isActivityStackTransparent = true isTopActivityNoDisplay = false numActivities = 1 baseActivity = baseActivityTest })) verify(packageManager, times(1)).getPackageInfo( eq("com.test.dummypackage"), eq(PackageManager.GET_PERMISSIONS) ) } @Test fun testIsTopActivityExemptFromDesktopWindowing_noActivitiesInStack() { assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing( Loading Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt +12 −8 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ class DesktopModeCompatPolicy(private val context: Context) { get() = context.getPackageManager() private val defaultHomePackage: String? get() = pkgManager.getHomeActivities(ArrayList())?.packageName private val packageInfoCache = mutableMapOf<String, Boolean>() /** * If the top activity should be exempt from desktop windowing and forced back to fullscreen. Loading Loading @@ -94,7 +96,8 @@ class DesktopModeCompatPolicy(private val context: Context) { if (packageName == null) { return false } return try { return packageInfoCache.getOrPut(packageName) { try { val packageInfo = pkgManager.getPackageInfo( packageName, PackageManager.GET_PERMISSIONS Loading @@ -104,6 +107,7 @@ class DesktopModeCompatPolicy(private val context: Context) { false // Package not found } } } // If the flag is disabled we make this condition neutral. return true } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt +28 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import org.mockito.ArgumentMatchers.anyString import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever /** Loading Loading @@ -110,6 +112,32 @@ class DesktopModeCompatPolicyTest : ShellTestCase() { })) } @Test @EnableFlags(Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION) fun testIsTopActivityExemptCachedPermissionCheckIsUsed() { allowOverlayPermission(arrayOf()) assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing( createFreeformTask(/* displayId */ 0) .apply { isActivityStackTransparent = true isTopActivityNoDisplay = false numActivities = 1 baseActivity = baseActivityTest })) assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing( createFreeformTask(/* displayId */ 0) .apply { isActivityStackTransparent = true isTopActivityNoDisplay = false numActivities = 1 baseActivity = baseActivityTest })) verify(packageManager, times(1)).getPackageInfo( eq("com.test.dummypackage"), eq(PackageManager.GET_PERMISSIONS) ) } @Test fun testIsTopActivityExemptFromDesktopWindowing_noActivitiesInStack() { assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing( Loading