summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Justin Lannin <jlannin@google.com> 2025-03-20 13:14:14 -0700
committer Justin Lannin <jlannin@google.com> 2025-03-20 23:17:18 -0700
commitdfa41abe65a81b36d9aeef2d50ee87bdb518c85e (patch)
tree60357e6707c314d5b355b338a022e7b42b635c10
parente4b37674f3c72f051bbeb6e6aede79b72dc11122 (diff)
WearAppPermissionGroupsHelper: Prioritize platform permissions on AppInfo page.
The HEALTH permission group is created by the healthfitness mainline module and not the OS_PKG. This meant that even though it is a platform permission group that it was getting sorted to the bottom of the list. Now we partition permissions based on whether they are platform permissions to ensure it takes it's rightful spot near the top. Bug: 404941005 Test: Locally built, verified ordering was fixed. Flag: EXEMPT bugfix Relnote: Fixing permission order on Wear App info page. LOW_COVERAGE_REASON=OTHER_FORM_FACTOR Change-Id: I33d901d330cd963494f83a0e4b778db3aebfb529
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt41
1 files changed, 22 insertions, 19 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt
index 2933d6fda..38a3b44e9 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt
@@ -44,6 +44,7 @@ import com.android.permissioncontroller.permission.ui.wear.model.WearAppPermissi
import com.android.permissioncontroller.permission.ui.wear.model.WearLocationProviderInterceptDialogViewModel
import com.android.permissioncontroller.permission.utils.ArrayUtils
import com.android.permissioncontroller.permission.utils.LocationUtils
+import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.permission.utils.legacy.LegacySafetyNetLogger
import com.android.permissioncontroller.permission.utils.navigateSafe
@@ -59,7 +60,7 @@ class WearAppPermissionGroupsHelper(
val wearViewModel: WearAppPermissionUsagesViewModel,
val revokeDialogViewModel: AppPermissionGroupsRevokeDialogViewModel,
val locationProviderInterceptDialogViewModel: WearLocationProviderInterceptDialogViewModel,
- private val toggledGroups: ArraySet<AppPermissionGroup> = ArraySet()
+ private val toggledGroups: ArraySet<AppPermissionGroup> = ArraySet(),
) {
fun getPermissionGroupChipParams(
appPermissionUsages: List<AppPermissionUsage>
@@ -71,7 +72,7 @@ class WearAppPermissionGroupsHelper(
viewModel.extractGroupUsageLastAccessTime(
groupUsageLastAccessTime,
appPermissionUsages,
- packageName
+ packageName,
)
val groupUiInfos = viewModel.packagePermGroupsLiveData.value
val groups: List<AppPermissionGroup> = appPermissions.permissionGroups
@@ -92,7 +93,7 @@ class WearAppPermissionGroupsHelper(
groups
.filter { Utils.shouldShowPermission(context, it) }
- .partition { it.declaringPackage == Utils.OS_PKG }
+ .partition { PermissionMapping.isPlatformPermissionGroup(it.name) }
.let { it.first.plus(it.second) }
.forEach { group ->
if (Utils.areGroupPermissionsIndividuallyControlled(context, group.name)) {
@@ -107,7 +108,7 @@ class WearAppPermissionGroupsHelper(
checked = group.areRuntimePermissionsGranted(arrayOf(perm.name)),
onCheckedChanged = { checked ->
run { onPermissionGrantedStateChanged(group, perm, checked) }
- }
+ },
)
)
}
@@ -123,10 +124,10 @@ class WearAppPermissionGroupsHelper(
getSummary(
category,
it,
- groupUsageLastAccessTime[it.groupName]
+ groupUsageLastAccessTime[it.groupName],
)
},
- onClick = { onPermissionGroupClicked(group, category.categoryName) }
+ onClick = { onPermissionGroupClicked(group, category.categoryName) },
)
)
}
@@ -138,7 +139,7 @@ class WearAppPermissionGroupsHelper(
private fun getSummary(
category: Category?,
groupUiInfo: GroupUiInfo,
- lastAccessTime: Long?
+ lastAccessTime: Long?,
): String {
val grantSummary =
getGrantSummary(category, groupUiInfo)?.let { context.getString(it) } ?: ""
@@ -196,7 +197,7 @@ class WearAppPermissionGroupsHelper(
private fun onPermissionGrantedStateChanged(
group: AppPermissionGroup,
perm: PermissionInfo,
- checked: Boolean
+ checked: Boolean,
) {
if (checked) {
group.grantRuntimePermissions(true, false, arrayOf(perm.name))
@@ -247,7 +248,7 @@ class WearAppPermissionGroupsHelper(
revokeDialogViewModel.hasConfirmedRevoke = true
}
revokeDialogViewModel.dismissDialog()
- }
+ },
)
} else {
revokePermissionInGroup(group, perm.name)
@@ -261,7 +262,7 @@ class WearAppPermissionGroupsHelper(
if ("user" == Build.TYPE) {
Log.e(
TAG,
- "The impossible happens, permission $permName is not in group $group.name."
+ "The impossible happens, permission $permName is not in group $group.name.",
)
null
} else {
@@ -291,13 +292,13 @@ class WearAppPermissionGroupsHelper(
private fun showRevocationWarningDialog(
messageId: Int,
onOkButtonClick: () -> Unit,
- onCancelButtonClick: () -> Unit = { revokeDialogViewModel.dismissDialog() }
+ onCancelButtonClick: () -> Unit = { revokeDialogViewModel.dismissDialog() },
) {
revokeDialogViewModel.revokeDialogArgs =
RevokeDialogArgs(
messageId = messageId,
onOkButtonClick = onOkButtonClick,
- onCancelButtonClick = onCancelButtonClick
+ onCancelButtonClick = onCancelButtonClick,
)
revokeDialogViewModel.showDialogLiveData.value = true
}
@@ -315,13 +316,15 @@ class WearAppPermissionGroupsHelper(
LocationUtils.isLocationGroupAndControllerExtraPackage(
context,
permGroupName,
- packageName
+ packageName,
)
) {
// Redirect to location controller extra package settings.
LocationUtils.startLocationControllerExtraPackageSettings(context, user)
- } else if (permGroupName.equals(HEALTH_PERMISSION_GROUP)
- && android.permission.flags.Flags.replaceBodySensorPermissionEnabled()) {
+ } else if (
+ permGroupName.equals(HEALTH_PERMISSION_GROUP) &&
+ android.permission.flags.Flags.replaceBodySensorPermissionEnabled()
+ ) {
// Redirect to Health&Fitness UI
Utils.navigateToAppHealthConnectSettings(fragment.requireContext(), packageName, user)
} else {
@@ -333,7 +336,7 @@ class WearAppPermissionGroupsHelper(
user,
caller,
sessionId,
- grantCategory
+ grantCategory,
)
fragment.findNavController().navigateSafe(R.id.perm_groups_to_app, args)
}
@@ -364,7 +367,7 @@ class WearAppPermissionGroupsHelper(
viewModel.setAutoRevoke(checked)
Log.w(TAG, "setAutoRevoke $checked")
}
- }
+ },
)
}
@@ -382,12 +385,12 @@ data class PermissionGroupChipParam(
val enabled: Boolean = true,
val checked: Boolean? = null,
val onClick: () -> Unit = {},
- val onCheckedChanged: (Boolean) -> Unit = {}
+ val onCheckedChanged: (Boolean) -> Unit = {},
)
data class AutoRevokeChipParam(
val labelRes: Int,
val visible: Boolean,
val checked: Boolean = false,
- val onCheckedChanged: (Boolean) -> Unit
+ val onCheckedChanged: (Boolean) -> Unit,
)