diff options
Diffstat (limited to 'PermissionController/src')
5 files changed, 22 insertions, 36 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt index 1f6b5272a..6e901fa26 100644 --- a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt +++ b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt @@ -99,6 +99,7 @@ import com.android.permissioncontroller.permission.data.get import com.android.permissioncontroller.permission.data.getUnusedPackages import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo import com.android.permissioncontroller.permission.service.revokeAppPermissions +import com.android.permissioncontroller.permission.utils.IPC import com.android.permissioncontroller.permission.utils.KotlinUtils import com.android.permissioncontroller.permission.utils.StringUtils import com.android.permissioncontroller.permission.utils.Utils @@ -861,7 +862,7 @@ class HibernationJobService : JobService() { return true } - private suspend fun showUnusedAppsNotification(numUnused: Int, sessionId: Long) { + private fun showUnusedAppsNotification(numUnused: Int, sessionId: Long) { val notificationManager = getSystemService(NotificationManager::class.java)!! val permissionReminderChannel = NotificationChannel( @@ -909,8 +910,10 @@ class HibernationJobService : JobService() { notificationManager.notify(HibernationJobService::class.java.simpleName, Constants.UNUSED_APPS_NOTIFICATION_ID, b.build()) - // Preload the unused packages - getUnusedPackages().getInitializedValue() + GlobalScope.launch(IPC) { + // Preload the unused packages + getUnusedPackages().getInitializedValue(staleOk = true) + } } override fun onStopJob(params: JobParameters?): Boolean { diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt index 25b478644..99b40d8a7 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt @@ -20,7 +20,6 @@ package com.android.permissioncontroller.permission.ui.model import android.Manifest import android.Manifest.permission.ACCESS_COARSE_LOCATION import android.Manifest.permission.ACCESS_FINE_LOCATION -import android.Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED import android.Manifest.permission_group.READ_MEDIA_VISUAL import android.annotation.SuppressLint import android.app.Activity @@ -376,8 +375,9 @@ class AppPermissionViewModel( val detailId = getIndividualPermissionDetailResId(group) detailResIdLiveData.value = detailId.first to detailId.second } - } else if (group.permGroupName == READ_MEDIA_VISUAL && - shouldShowPhotoPickerPromptForApp(group)) { + } else if (KotlinUtils.isPhotoPickerPromptEnabled() && + group.permGroupName == READ_MEDIA_VISUAL && + group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.TIRAMISU) { // Allow / Select Photos / Deny case allowedState.isShown = true deniedState.isShown = true @@ -471,19 +471,6 @@ class AppPermissionViewModel( } } - private fun shouldShowPhotoPickerPromptForApp(group: LightAppPermGroup): Boolean { - if (!isPhotoPickerPromptEnabled() || - group.packageInfo.targetSdkVersion < Build.VERSION_CODES.TIRAMISU) { - return false - } - if (group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { - return true - } - val userSelectedPerm = group.permissions[READ_MEDIA_VISUAL_USER_SELECTED] ?: return false - return !userSelectedPerm.isImplicit - } - - fun registerPhotoPickerResultIfNeeded(fragment: Fragment) { if (permGroupName != READ_MEDIA_VISUAL) { return diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt index 471f1486b..8a2216469 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt @@ -124,7 +124,6 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils.getDefaultP import com.android.permissioncontroller.permission.utils.KotlinUtils.grantBackgroundRuntimePermissions import com.android.permissioncontroller.permission.utils.KotlinUtils.grantForegroundRuntimePermissions import com.android.permissioncontroller.permission.utils.KotlinUtils.isLocationAccuracyEnabled -import com.android.permissioncontroller.permission.utils.KotlinUtils.isPhotoPickerPromptEnabled import com.android.permissioncontroller.permission.utils.KotlinUtils.isPhotoPickerPromptSupported import com.android.permissioncontroller.permission.utils.KotlinUtils.revokeBackgroundRuntimePermissions import com.android.permissioncontroller.permission.utils.KotlinUtils.revokeForegroundRuntimePermissions @@ -368,8 +367,9 @@ class GrantPermissionsViewModel( // null == var detailMessage = RequestMessage.NO_MESSAGE - if (groupState.group.permGroupName == READ_MEDIA_VISUAL && - shouldShowPhotoPickerPromptForApp(groupState.group)) { + if (KotlinUtils.isPhotoPickerPromptEnabled() && + groupState.group.permGroupName == READ_MEDIA_VISUAL && + groupState.group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.TIRAMISU) { // If the USER_SELECTED permission is user fixed and granted, or the app is only // requesting USER_SELECTED, direct straight to photo picker val userPerm = groupState.group.permissions[READ_MEDIA_VISUAL_USER_SELECTED] @@ -897,18 +897,6 @@ class GrantPermissionsViewModel( } } - private fun shouldShowPhotoPickerPromptForApp(group: LightAppPermGroup): Boolean { - if (!isPhotoPickerPromptEnabled() || - group.packageInfo.targetSdkVersion < Build.VERSION_CODES.TIRAMISU) { - return false - } - if (group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { - return true - } - val userSelectedPerm = group.permissions[READ_MEDIA_VISUAL_USER_SELECTED] ?: return false - return !userSelectedPerm.isImplicit - } - private fun getStateFromPolicy(perm: String, group: LightAppPermGroup): Int { val isBackground = perm in group.backgroundPermNames var skipGroup = false diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardAnimator.kt b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardAnimator.kt index 2bc83eb10..c83737649 100644 --- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardAnimator.kt +++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardAnimator.kt @@ -91,9 +91,11 @@ class IssueCardAnimator(val callback: AnimationCallback) { // view groups. defaultIssueContentGroup.visibility = View.INVISIBLE - // These two views are outside of the group since their visibility must be set + // These views are outside of the group since their visibility must be set // independently of the rest of the group, and some frustrating constraints of // constraint layout's behavior. See b/242705351 for context. + makeInvisibleIfVisible(holder.findViewById(R.id.issue_card_attribution_title)) + makeInvisibleIfVisible(holder.findViewById(R.id.issue_card_dismiss_btn)) makeInvisibleIfVisible(holder.findViewById(R.id.issue_card_subtitle)) makeInvisibleIfVisible(holder.findViewById(R.id.issue_card_protected_by_android)) diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/SafetyCenterUiData.kt b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/SafetyCenterUiData.kt index 39241ff9a..239f9a377 100644 --- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/SafetyCenterUiData.kt +++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/SafetyCenterUiData.kt @@ -21,6 +21,7 @@ import android.safetycenter.SafetyCenterData import android.safetycenter.SafetyCenterEntryGroup import android.safetycenter.SafetyCenterEntryOrGroup import android.safetycenter.SafetyCenterIssue +import android.safetycenter.SafetyCenterIssue.ISSUE_SEVERITY_LEVEL_OK import androidx.annotation.RequiresApi import com.android.safetycenter.internaldata.SafetyCenterBundles.ISSUES_TO_GROUPS_BUNDLE_KEY @@ -51,7 +52,7 @@ data class SafetyCenterUiData( */ @RequiresApi(UPSIDE_DOWN_CAKE) fun getMatchingDismissedIssues(groupId: String): List<SafetyCenterIssue> = - selectMatchingIssuesForGroup(groupId, safetyCenterData.dismissedIssues) + selectMatchingIssuesForGroup(groupId, safetyCenterData.visibleDismissedIssues()) @RequiresApi(UPSIDE_DOWN_CAKE) private fun selectMatchingIssuesForGroup( @@ -68,4 +69,9 @@ data class SafetyCenterUiData( if (mappingExists) matchesInMapping else matchesByDefault } } + + /** Returns the [SafetyCenterData.getDismissedIssues] that are meant to be visible in the UI. */ + @RequiresApi(UPSIDE_DOWN_CAKE) + fun SafetyCenterData.visibleDismissedIssues() = + dismissedIssues.filter { it.severityLevel > ISSUE_SEVERITY_LEVEL_OK } } |