diff options
author | 2025-03-21 20:23:11 -0700 | |
---|---|---|
committer | 2025-03-21 20:23:11 -0700 | |
commit | 2af72695f264f8c36e0cb1289df079afecd63984 (patch) | |
tree | 12a2bb742313f2dfa436d0e53526e6ed0c8c67bd | |
parent | afba1bb6158e91e1323c8a1c7370413ad4516b37 (diff) | |
parent | 0ee3e3832d76927465e054cc4716b72033cea0ec (diff) |
Snap for 13256841 from 0ee3e3832d76927465e054cc4716b72033cea0ec to 25Q2-release
Change-Id: I4fdc2a3bd4b5bb5896176a091e76925c2ce972bf
13 files changed, 148 insertions, 64 deletions
diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml index 4ba524462..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> @@ -1938,7 +1940,8 @@ </role> <role - name="android.app.role.COMPANION_DEVICE_SENSOR_DEVICE_STREAMING" + name="android.app.role.COMPANION_DEVICE_VIRTUAL_DEVICE" + allowBypassingQualification="true" exclusive="false" exclusivity="none" featureFlag="android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole" 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/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java index 93e5abc70..149bc4efc 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java @@ -39,7 +39,6 @@ import static android.content.Intent.EXTRA_REASON; import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT; import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT; import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT; -import static android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQUESTED; import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED; import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; @@ -116,6 +115,7 @@ import com.android.permissioncontroller.R; import com.android.permissioncontroller.permission.model.AppPermissionGroup; import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup; import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo; +import com.android.settingslib.widget.SettingsThemeHelper; import kotlin.Triple; @@ -1070,6 +1070,14 @@ public final class Utils { } /** + * Whether Expressive Design is enabled on this device. + */ + public static boolean isExpressiveDesignEnabled(@NonNull Context context) { + return SdkLevel.isAtLeastB() && DeviceUtils.isHandheld() + && SettingsThemeHelper.isExpressiveTheme(context); + } + + /** * Returns true if the group name passed is that of the Platform health group. * @param permGroupName name of the group that needs to be checked. */ @@ -1184,45 +1192,29 @@ public final class Utils { } } - // Split permission only applies to READ_HEART_RATE. - if (!requestedHealthPermissions.contains(HealthPermissions.READ_HEART_RATE)) { - return false; - } - - // If there are other health permissions (other than READ_HEALTH_DATA_IN_BACKGROUND) - // don't consider this a pure split-permission request. - if (requestedHealthPermissions.size() > 2) { - return false; - } - - boolean isBackgroundPermissionRequested = - requestedHealthPermissions.contains( - HealthPermissions.READ_HEALTH_DATA_IN_BACKGROUND); - // If there are two health permissions declared, make sure the other is - // READ_HEALTH_DATA_IN_BACKGROUND. - if (requestedHealthPermissions.size() == 2 && !isBackgroundPermissionRequested) { + if (!isValidSplitHealthPermissions(requestedHealthPermissions)) { return false; } - // If READ_HEALTH_DATA_IN_BACKGROUND is requested, check permission flag to see if is from - // split permission. - if (isBackgroundPermissionRequested) { - int readHealthDataInBackgroundFlag = - pm.getPermissionFlags( - HealthPermissions.READ_HEALTH_DATA_IN_BACKGROUND, packageName, user); - if (!isFromSplitPermission(readHealthDataInBackgroundFlag)) { + int targetSdk = packageInfo.getTargetSdkVersion(); + for (String perm : requestedHealthPermissions) { + if (!isFromSplitPermission(pm.getPermissionFlags(perm, packageName, user), targetSdk)) { return false; } } + return true; + } - // Check READ_HEART_RATE permission flag to see if is from split permission. - int readHeartRateFlag = - pm.getPermissionFlags(HealthPermissions.READ_HEART_RATE, packageName, user); - return isFromSplitPermission(readHeartRateFlag); + private static boolean isValidSplitHealthPermissions(List<String> permissions) { + return (permissions.size() == 1 && permissions.contains(HealthPermissions.READ_HEART_RATE)) + || (permissions.size() == 2 && permissions.contains(HealthPermissions.READ_HEART_RATE) + && permissions.contains(HealthPermissions.READ_HEALTH_DATA_IN_BACKGROUND)); } - private static boolean isFromSplitPermission(int permissionFlag) { - return (permissionFlag & FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0; + private static boolean isFromSplitPermission(int permissionFlag, int targetSdk) { + return (targetSdk >= Build.VERSION_CODES.M) + ? (permissionFlag & PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0 + : (permissionFlag & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0; } /** diff --git a/PermissionController/tests/permissionui/Android.bp b/PermissionController/tests/permissionui/Android.bp index 8cc91bd99..e289e2c58 100644 --- a/PermissionController/tests/permissionui/Android.bp +++ b/PermissionController/tests/permissionui/Android.bp @@ -74,6 +74,7 @@ android_test { ":PermissionUiReadCalendarPermissionApp", ":PermissionUiUseLegacyBodySensorsPermissionApp", ":PermissionUiUseReadHeartRatePermissionApp", + ":PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App", ], per_testcase_directory: true, } diff --git a/PermissionController/tests/permissionui/AndroidTest.xml b/PermissionController/tests/permissionui/AndroidTest.xml index 2462dc4c7..85dc4925a 100644 --- a/PermissionController/tests/permissionui/AndroidTest.xml +++ b/PermissionController/tests/permissionui/AndroidTest.xml @@ -61,6 +61,8 @@ value="/data/local/tmp/pc-permissionui/PermissionUiUseLegacyBodySensorsPermissionApp.apk" /> <option name="push-file" key="PermissionUiUseReadHeartRatePermissionApp.apk" value="/data/local/tmp/pc-permissionui/PermissionUiUseReadHeartRatePermissionApp.apk" /> + <option name="push-file" key="PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App.apk" + value="/data/local/tmp/pc-permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App.apk" /> </target_preparer> <!-- Wake the screen, and dismiss keyguard --> diff --git a/PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/Android.bp b/PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/Android.bp new file mode 100644 index 000000000..539fb2686 --- /dev/null +++ b/PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/Android.bp @@ -0,0 +1,34 @@ +// +// Copyright (C) 2025 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "packages_modules_Permission_PermissionController_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: [ + "packages_modules_Permission_PermissionController_license", + ], +} + +android_test_helper_app { + name: "PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App", + + srcs: ["src/**/*.kt"], + + sdk_version: "22", +} diff --git a/PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/AndroidManifest.xml b/PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/AndroidManifest.xml new file mode 100644 index 000000000..2a08d47ae --- /dev/null +++ b/PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/AndroidManifest.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2025 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.permissioncontroller.tests.appthatrequestpermission"> + + <uses-permission android:name="android.permission.BODY_SENSORS" /> + <uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" /> + + <application /> +</manifest> diff --git a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAllAppPermissionFragmentTest.kt b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAllAppPermissionFragmentTest.kt index 10670c5d5..1c6705d3e 100644 --- a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAllAppPermissionFragmentTest.kt +++ b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAllAppPermissionFragmentTest.kt @@ -31,6 +31,7 @@ import org.junit.After import org.junit.Assert.assertNull import org.junit.Assume.assumeFalse import org.junit.Before +import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith @@ -74,6 +75,7 @@ class HealthConnectAllAppPermissionFragmentTest : BasePermissionUiTest() { @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @Test + @Ignore("b/405152547") fun usedHealthConnectPermissionsAreListed_healthFitnessBrand() { installTestAppThatUsesHealthConnectPermission() @@ -115,6 +117,7 @@ class HealthConnectAllAppPermissionFragmentTest : BasePermissionUiTest() { @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @Test + @Ignore("b/405152547") fun invalidUngrantedUsedHealthConnectPermissionsAreNotListed_healthFitnessBrand() { installInvalidTestAppThatUsesHealthConnectPermission() diff --git a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAppPermissionFragmentTest.kt b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAppPermissionFragmentTest.kt index a0de2f7cd..48d14a967 100644 --- a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAppPermissionFragmentTest.kt +++ b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/HealthConnectAppPermissionFragmentTest.kt @@ -36,6 +36,7 @@ import org.junit.After import org.junit.Assume.assumeFalse import org.junit.Assume.assumeTrue import org.junit.Before +import org.junit.Ignore import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @@ -84,6 +85,7 @@ class HealthConnectAppPermissionFragmentTest : BasePermissionUiTest() { @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @Test + @Ignore("b/405152547") fun usedHealthConnectPermissionsAreListed_handHeldDevices_healthFitnessBrand() { assumeFalse(context.packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH)) installTestAppThatUsesHealthConnectPermission() @@ -131,6 +133,7 @@ class HealthConnectAppPermissionFragmentTest : BasePermissionUiTest() { @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @RequiresFlagsEnabled(FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) @Test + @Ignore("b/405152547") fun startManageAppPermissionsActivity_handHeldDevices_requestLegacyBodySensorsUngranted_healthConnectShowsUp() { assumeFalse(context.packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH)) installTestAppThatUsesLegacyBodySensorsPermissions() @@ -143,6 +146,20 @@ class HealthConnectAppPermissionFragmentTest : BasePermissionUiTest() { @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") @RequiresFlagsEnabled(FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) @Test + @Ignore("b/405152547") + fun startManageAppPermissionsActivity_handHeldDevices_requestLegacyBodySensorsTargetSdk22Ungranted_healthConnectShowsUp() { + assumeFalse(context.packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH)) + installTestAppThatUsesLegacyBodySensorsPermissionsTargetSdk22() + + startManageAppPermissionsActivity() + + eventually { waitFindObject(By.text(HEALTH_FITNESS_LABEL)) } + } + + + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @RequiresFlagsEnabled(FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) + @Test fun startManageAppPermissionsActivity_handHeldDevices_requestReadHeartRateUngranted_healthConnectNotShowsUp() { assumeFalse(context.packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH)) installTestAppThatUsesReadHeartRatePermissions() diff --git a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/TestAppUtils.kt b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/TestAppUtils.kt index 8eef11e73..c3799c4c1 100644 --- a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/TestAppUtils.kt +++ b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/TestAppUtils.kt @@ -40,6 +40,8 @@ private const val LEGACY_BODY_SENSORS_APK = "$APK_DIRECTORY/PermissionUiUseLegacyBodySensorsPermissionApp.apk" private const val READ_HEART_RATE_APK = "$APK_DIRECTORY/PermissionUiUseReadHeartRatePermissionApp.apk" +private const val LEGACY_BODY_SENSORS_TARGET_SDK_22_APK = + "$APK_DIRECTORY/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App.apk" // All 4 of the AppThatUses_X_Permission(s) applications share the same package name. private const val PERM_DEFINER_PACKAGE = @@ -77,6 +79,8 @@ fun installTestAppThatUsesLegacyBodySensorsPermissions() = install(LEGACY_BODY_S fun installTestAppThatUsesReadHeartRatePermissions() = install(READ_HEART_RATE_APK) +fun installTestAppThatUsesLegacyBodySensorsPermissionsTargetSdk22() = install(LEGACY_BODY_SENSORS_TARGET_SDK_22_APK) + fun uninstallTestApps() { uninstallApp(PERM_USER_PACKAGE) uninstallApp(PERM_DEFINER_PACKAGE) 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" diff --git a/tests/cts/permissionpolicy/res/raw/android_manifest.xml b/tests/cts/permissionpolicy/res/raw/android_manifest.xml index 4476d934b..200e3cf42 100644 --- a/tests/cts/permissionpolicy/res/raw/android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/android_manifest.xml @@ -4554,12 +4554,12 @@ android:protectionLevel="signature|privileged" /> <!-- Allows application to request to stream content from an Android host to a nearby device - ({@link android.companion.AssociationRequest#DEVICE_PROFILE_SENSOR_DEVICE_STREAMING}) + ({@link android.companion.AssociationRequest#DEVICE_PROFILE_VIRTUAL_DEVICE}) by {@link android.companion.CompanionDeviceManager}. <p>Not for use by third-party applications. @FlaggedApi(android.companion.virtualdevice.flags.Flags.FLAG_ENABLE_LIMITED_VDM_ROLE) --> - <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_SENSOR_DEVICE_STREAMING" + <permission android:name="android.permission.REQUEST_COMPANION_PROFILE_VIRTUAL_DEVICE" android:protectionLevel="signature|privileged" android:featureFlag="android.companion.virtualdevice.flags.enable_limited_vdm_role" /> diff --git a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt index eda6e92be..432d1efb1 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt @@ -691,7 +691,7 @@ abstract class BaseUsePermissionTest : BasePermissionTest() { waitForPermissionRequestActivity() } else { doAndWaitForWindowTransition { - startActivityForFuture(*permissions, askTwice = askTwice) + future = startActivityForFuture(*permissions, askTwice = askTwice) } } |