From 50e7f488c2d5f3ae1c39d739125856d71d76ca01 Mon Sep 17 00:00:00 2001 From: Atneya Nair Date: Thu, 19 Dec 2024 21:27:38 -0800 Subject: [appops] Default MODE_FOREGROUND ops for listener The current appop mode change listeners for foreground changes only consider uid/packages who have a mode explicitly set to MODE_FOREGROUND. While this assumption was valid in the past, we now have appops with default modes set to MODE_FOREGROUND, and these ops need to be considered within the set of ops whose state can be changed Test: CtsMediaAudioPermissionTestCases Bug: 376481063 Flag: EXEMPT bugfix Change-Id: I197f224286815a35bf041fd39bf8cb12dbde6381 --- .../java/com/android/server/permission/access/appop/AppOpService.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt index 161a8168d993..b356b830a5c4 100644 --- a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt +++ b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt @@ -119,6 +119,10 @@ class AppOpService(private val service: AccessCheckingService) : AppOpsCheckingS val permissions = service.getState { with(permissionPolicy) { getPermissions() } } for (appOpCode in 0 until AppOpsManager._NUM_OP) { + // Ops that default to MODE_FOREGROUND are foregroundable. + if (AppOpsManager.opToDefaultMode(appOpCode) == AppOpsManager.MODE_FOREGROUND) { + foregroundableOps[appOpCode] = true + } AppOpsManager.opToPermission(appOpCode)?.let { permissionName -> // Multiple ops might map to a single permission but only one is considered the // runtime appop calculations. -- cgit v1.2.3-59-g8ed1b