summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/res/xml/roles.xml2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt41
-rw-r--r--SafetyCenter/Resources/res/raw-v36/safety_center_config.xml20
3 files changed, 34 insertions, 29 deletions
diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml
index 41eaf8b6e..ae8adc5ab 100644
--- a/PermissionController/res/xml/roles.xml
+++ b/PermissionController/res/xml/roles.xml
@@ -726,6 +726,8 @@
minSdkVersion="35" />
<permission name="android.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING"
minSdkVersion="35" />
+ <permission name="android.permission.MANAGE_DEVICE_POLICY_MTE"
+ minSdkVersion="36" />
</permissions>
<!-- App ops needed to allow background access to audio APIs for CTS -->
<app-ops>
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,
)
diff --git a/SafetyCenter/Resources/res/raw-v36/safety_center_config.xml b/SafetyCenter/Resources/res/raw-v36/safety_center_config.xml
index 4e1865697..730edf812 100644
--- a/SafetyCenter/Resources/res/raw-v36/safety_center_config.xml
+++ b/SafetyCenter/Resources/res/raw-v36/safety_center_config.xml
@@ -30,16 +30,6 @@
initialDisplayState="disabled"
notificationsAllowed="true"/>
<dynamic-safety-source
- id="AndroidFaceUnlock"
- packageName="com.android.settings"
- profile="all_profiles"
- title="@com.android.safetycenter.resources:string/face_unlock_title"
- titleForWork="@com.android.safetycenter.resources:string/face_unlock_title_for_work"
- titleForPrivateProfile="@com.android.safetycenter.resources:string/face_unlock_title_for_private_profile"
- searchTerms="@com.android.safetycenter.resources:string/face_unlock_search_terms"
- refreshOnPageOpenAllowed="true"
- initialDisplayState="hidden"/>
- <dynamic-safety-source
id="AndroidFingerprintUnlock"
packageName="com.android.settings"
profile="all_profiles"
@@ -50,6 +40,16 @@
refreshOnPageOpenAllowed="true"
initialDisplayState="hidden"/>
<dynamic-safety-source
+ id="AndroidFaceUnlock"
+ packageName="com.android.settings"
+ profile="all_profiles"
+ title="@com.android.safetycenter.resources:string/face_unlock_title"
+ titleForWork="@com.android.safetycenter.resources:string/face_unlock_title_for_work"
+ titleForPrivateProfile="@com.android.safetycenter.resources:string/face_unlock_title_for_private_profile"
+ searchTerms="@com.android.safetycenter.resources:string/face_unlock_search_terms"
+ refreshOnPageOpenAllowed="true"
+ initialDisplayState="hidden"/>
+ <dynamic-safety-source
id="AndroidWearUnlock"
packageName="com.android.settings"
profile="all_profiles"