Loading src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt +9 −14 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.UserHandle import com.android.permissioncontroller.PermissionControllerApplication import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS import com.android.permissioncontroller.permission.model.livedatatypes.AutoRevokeState import com.android.permissioncontroller.permission.service.ExemptServicesLiveData import com.android.permissioncontroller.permission.service.isAutoRevokeEnabled import com.android.permissioncontroller.permission.service.isPackageAutoRevokeExempt import com.android.permissioncontroller.permission.service.isPackageAutoRevokePermanentlyExempt Loading @@ -47,6 +48,7 @@ class AutoRevokeStateLiveData private constructor( PackagePermissionsLiveData[packageName, user] private val packageLiveData = LightPackageInfoLiveData[packageName, user] private val permStateLiveDatas = mutableMapOf<String, PermStateLiveData>() private val exemptServicesLiveData = ExemptServicesLiveData[user] private val appOpsManager = app.getSystemService(AppOpsManager::class.java)!! init { Loading @@ -56,29 +58,22 @@ class AutoRevokeStateLiveData private constructor( addSource(packageLiveData) { updateIfActive() } addSource(exemptServicesLiveData) { updateIfActive() } override suspend fun loadDataAndPostValue(job: Job) { if (!packageLiveData.isInitialized) { return } if (packageLiveData.value == null) { postValue(null) return } val uid = packageLiveData.value?.uid if (uid == null) { postValue(null) override suspend fun loadDataAndPostValue(job: Job) { if (!packageLiveData.isInitialized || !packagePermsLiveData.isInitialized || !exemptServicesLiveData.isInitialized) { return } val groups = packagePermsLiveData.value?.keys?.filter { it != NON_RUNTIME_NORMAL_PERMS } if (groups == null && packagePermsLiveData.isInitialized) { if (packageLiveData.value?.uid == null || groups == null) { postValue(null) return } else if (groups == null) { return } val getLiveData = { groupName: String -> PermStateLiveData[packageName, groupName, user] } Loading src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt +1 −6 Original line number Diff line number Diff line Loading @@ -21,8 +21,6 @@ import android.app.usage.UsageStats import android.app.usage.UsageStatsManager import android.app.usage.UsageStatsManager.INTERVAL_MONTHLY import android.os.UserHandle import android.os.UserManager import com.android.permissioncontroller.DeviceUtils import com.android.permissioncontroller.PermissionControllerApplication import com.android.permissioncontroller.permission.utils.Utils import kotlinx.coroutines.Job Loading Loading @@ -54,13 +52,10 @@ class UsageStatsLiveData private constructor( val now = System.currentTimeMillis() val userMap = mutableMapOf<UserHandle, List<UsageStats>>() val userManager = app.getSystemService(UserManager::class.java)!! val enabledUsers = userManager.enabledProfiles for (user in UsersLiveData.value!!) { // If the user is not enabled, or if the user is a managed profile, and this is not an // android TV (where parental control accounts are managed profiles), do not get stats. if (user !in enabledUsers || (userManager.isManagedProfile(user.identifier) && !DeviceUtils.isTelevision(app))) { if (Utils.isUserDisabledOrWorkProfile(user)) { continue } val statsManager = Utils.getUserContext(app, user).getSystemService( Loading src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt +1 −1 Original line number Diff line number Diff line Loading @@ -670,7 +670,7 @@ class AutoRevokeService : JobService() { * Packages using exempt services for the current user (package-name -> list<service-interfaces> * implemented by the package) */ private class ExemptServicesLiveData(val user: UserHandle) class ExemptServicesLiveData(val user: UserHandle) : SmartUpdateMediatorLiveData<Map<String, List<String>>>() { private val serviceLiveDatas: List<SmartUpdateMediatorLiveData<Set<String>>> = listOf( ServiceLiveData[InputMethod.SERVICE_INTERFACE, Loading src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt +7 −3 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ class AppPermissionGroupsViewModel( this(groupName, isSystem, PermSubtitle.NONE) } val autoRevokeLiveData = AutoRevokeStateLiveData[packageName, user] /** * LiveData whose data is a map of grant category (either allowed or denied) to a list * of permission group names that match the key, and two booleans representing if this is a Loading @@ -103,6 +105,10 @@ class AppPermissionGroupsViewModel( addSource(fullStoragePermsLiveData) { updateIfActive() } addSource(autoRevokeLiveData) { removeSource(autoRevokeLiveData) updateIfActive() } updateIfActive() } Loading @@ -112,7 +118,7 @@ class AppPermissionGroupsViewModel( value = null return } else if (groups == null || (Manifest.permission_group.STORAGE in groups && !fullStoragePermsLiveData.isInitialized)) { !fullStoragePermsLiveData.isInitialized) || !autoRevokeLiveData.isInitialized) { return } Loading Loading @@ -168,8 +174,6 @@ class AppPermissionGroupsViewModel( } } val autoRevokeLiveData = AutoRevokeStateLiveData[packageName, user] fun setAutoRevoke(enabled: Boolean) { GlobalScope.launch(IPC) { val aom = PermissionControllerApplication.get() Loading Loading
src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt +9 −14 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.UserHandle import com.android.permissioncontroller.PermissionControllerApplication import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS import com.android.permissioncontroller.permission.model.livedatatypes.AutoRevokeState import com.android.permissioncontroller.permission.service.ExemptServicesLiveData import com.android.permissioncontroller.permission.service.isAutoRevokeEnabled import com.android.permissioncontroller.permission.service.isPackageAutoRevokeExempt import com.android.permissioncontroller.permission.service.isPackageAutoRevokePermanentlyExempt Loading @@ -47,6 +48,7 @@ class AutoRevokeStateLiveData private constructor( PackagePermissionsLiveData[packageName, user] private val packageLiveData = LightPackageInfoLiveData[packageName, user] private val permStateLiveDatas = mutableMapOf<String, PermStateLiveData>() private val exemptServicesLiveData = ExemptServicesLiveData[user] private val appOpsManager = app.getSystemService(AppOpsManager::class.java)!! init { Loading @@ -56,29 +58,22 @@ class AutoRevokeStateLiveData private constructor( addSource(packageLiveData) { updateIfActive() } addSource(exemptServicesLiveData) { updateIfActive() } override suspend fun loadDataAndPostValue(job: Job) { if (!packageLiveData.isInitialized) { return } if (packageLiveData.value == null) { postValue(null) return } val uid = packageLiveData.value?.uid if (uid == null) { postValue(null) override suspend fun loadDataAndPostValue(job: Job) { if (!packageLiveData.isInitialized || !packagePermsLiveData.isInitialized || !exemptServicesLiveData.isInitialized) { return } val groups = packagePermsLiveData.value?.keys?.filter { it != NON_RUNTIME_NORMAL_PERMS } if (groups == null && packagePermsLiveData.isInitialized) { if (packageLiveData.value?.uid == null || groups == null) { postValue(null) return } else if (groups == null) { return } val getLiveData = { groupName: String -> PermStateLiveData[packageName, groupName, user] } Loading
src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt +1 −6 Original line number Diff line number Diff line Loading @@ -21,8 +21,6 @@ import android.app.usage.UsageStats import android.app.usage.UsageStatsManager import android.app.usage.UsageStatsManager.INTERVAL_MONTHLY import android.os.UserHandle import android.os.UserManager import com.android.permissioncontroller.DeviceUtils import com.android.permissioncontroller.PermissionControllerApplication import com.android.permissioncontroller.permission.utils.Utils import kotlinx.coroutines.Job Loading Loading @@ -54,13 +52,10 @@ class UsageStatsLiveData private constructor( val now = System.currentTimeMillis() val userMap = mutableMapOf<UserHandle, List<UsageStats>>() val userManager = app.getSystemService(UserManager::class.java)!! val enabledUsers = userManager.enabledProfiles for (user in UsersLiveData.value!!) { // If the user is not enabled, or if the user is a managed profile, and this is not an // android TV (where parental control accounts are managed profiles), do not get stats. if (user !in enabledUsers || (userManager.isManagedProfile(user.identifier) && !DeviceUtils.isTelevision(app))) { if (Utils.isUserDisabledOrWorkProfile(user)) { continue } val statsManager = Utils.getUserContext(app, user).getSystemService( Loading
src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt +1 −1 Original line number Diff line number Diff line Loading @@ -670,7 +670,7 @@ class AutoRevokeService : JobService() { * Packages using exempt services for the current user (package-name -> list<service-interfaces> * implemented by the package) */ private class ExemptServicesLiveData(val user: UserHandle) class ExemptServicesLiveData(val user: UserHandle) : SmartUpdateMediatorLiveData<Map<String, List<String>>>() { private val serviceLiveDatas: List<SmartUpdateMediatorLiveData<Set<String>>> = listOf( ServiceLiveData[InputMethod.SERVICE_INTERFACE, Loading
src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt +7 −3 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ class AppPermissionGroupsViewModel( this(groupName, isSystem, PermSubtitle.NONE) } val autoRevokeLiveData = AutoRevokeStateLiveData[packageName, user] /** * LiveData whose data is a map of grant category (either allowed or denied) to a list * of permission group names that match the key, and two booleans representing if this is a Loading @@ -103,6 +105,10 @@ class AppPermissionGroupsViewModel( addSource(fullStoragePermsLiveData) { updateIfActive() } addSource(autoRevokeLiveData) { removeSource(autoRevokeLiveData) updateIfActive() } updateIfActive() } Loading @@ -112,7 +118,7 @@ class AppPermissionGroupsViewModel( value = null return } else if (groups == null || (Manifest.permission_group.STORAGE in groups && !fullStoragePermsLiveData.isInitialized)) { !fullStoragePermsLiveData.isInitialized) || !autoRevokeLiveData.isInitialized) { return } Loading Loading @@ -168,8 +174,6 @@ class AppPermissionGroupsViewModel( } } val autoRevokeLiveData = AutoRevokeStateLiveData[packageName, user] fun setAutoRevoke(enabled: Boolean) { GlobalScope.launch(IPC) { val aom = PermissionControllerApplication.get() Loading