From bc2f8d82a9c15093ca84b8078fc5687c5983f9e7 Mon Sep 17 00:00:00 2001 From: Vladimir Komsiyski Date: Sat, 15 Mar 2025 01:03:25 -0700 Subject: Rename the limited VDM role and permission Bug: 368633836 Test: presubmit Relnote: n/a LOW_COVERAGE_REASON=NON_CODE_ONLY Flag: android.companion.virtualdevice.flags.enable_limited_vdm_role Change-Id: I4f71eccabf3b746767d70092cdf3591d944efe20 --- PermissionController/res/xml/roles.xml | 3 ++- tests/cts/permissionpolicy/res/raw/android_manifest.xml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml index 0f9ff7112..d7701aba8 100644 --- a/PermissionController/res/xml/roles.xml +++ b/PermissionController/res/xml/roles.xml @@ -1936,7 +1936,8 @@ - -- cgit v1.2.3-59-g8ed1b From c1ce5453871c188be8941a17dde3a43f02d81d0c Mon Sep 17 00:00:00 2001 From: Yi-an Chen Date: Thu, 20 Mar 2025 18:36:27 +0000 Subject: Fix future assignment in BaseUsePermissionTest Missing the future assignment in BaseUsePermissionTest LOW_COVERAGE_REASON=TEST_ONLY Bug: 403393912 Test: BaseUsePermissionTest Flag: EXEMPT bugfix Relnote: N/A Change-Id: I0c60c8b36425b2b620a43585b452d4d925828a72 --- .../permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) } } -- cgit v1.2.3-59-g8ed1b From 77fd95aa28119818eeb18fae99f7c5836991bd96 Mon Sep 17 00:00:00 2001 From: Scarlett Song Date: Thu, 20 Mar 2025 21:15:57 +0000 Subject: HealthFitness: Disable HealthFitness label tests until baseline build catches up Recently part of permissions branding in HealthConnect is renamed to HealthFitness. The tests and mainline codes are updated, but the baseline build where the tests are run didn't catch up. To mitigate this issue for FRC date, we will temporarily disable these tests, and re-enable them post FRC when baseline build and HealthFitness mainline modules also catch up. Relnote: N/A Flag: EXEMPT test disabling Bug: 405152547 Bug: 405183811 Change-Id: Ib55b6ab920bef7fd493222b61cfd0d2e8c665bed --- .../permissionui/ui/HealthConnectAllAppPermissionFragmentTest.kt | 3 +++ .../permissionui/ui/HealthConnectAppPermissionFragmentTest.kt | 3 +++ 2 files changed, 6 insertions(+) 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..8fc2fdc1b 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() -- cgit v1.2.3-59-g8ed1b From 46db55c94f2d851d78976f189d0dcd92a396ff51 Mon Sep 17 00:00:00 2001 From: Scarlett Song Date: Fri, 14 Mar 2025 21:22:52 +0000 Subject: Support health split permission check for targetSdk<23 apps Test: atest HealthConnectAppPermissionFragmentTest Bug: 403337565 Flag: android.permission.flags.replace_body_sensor_permission_enabled Relnote: Health permission split BODY_SENSORS to READ_HEART_RATE LOW_COVERAGE_REASON=b/405152547 Change-Id: I770fdf9a551bb53a6e0d7adccd39ea6bf285c57b --- .../permission/utils/Utils.java | 46 ++++++++-------------- PermissionController/tests/permissionui/Android.bp | 1 + .../tests/permissionui/AndroidTest.xml | 2 + .../Android.bp | 34 ++++++++++++++++ .../AndroidManifest.xml | 25 ++++++++++++ .../ui/HealthConnectAppPermissionFragmentTest.kt | 14 +++++++ .../permissionui/ui/TestAppUtils.kt | 4 ++ 7 files changed, 96 insertions(+), 30 deletions(-) create mode 100644 PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/Android.bp create mode 100644 PermissionController/tests/permissionui/PermissionUiUseLegacyBodySensorsPermissionTargetSdk22App/AndroidManifest.xml diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java index 327142896..675a1049f 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java @@ -39,6 +39,7 @@ 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_REVIEW_REQUIRED; 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; @@ -82,6 +83,7 @@ import android.health.connect.HealthConnectManager; import android.health.connect.HealthPermissions; import android.os.Binder; import android.os.Build; +import android.os.Build.VERSION_CODES; import android.os.Parcelable; import android.os.UserHandle; import android.os.UserManager; @@ -1171,45 +1173,29 @@ public final class Utils { } } - // Split permission only applies to READ_HEART_RATE. - if (!requestedHealthPermissions.contains(HealthPermissions.READ_HEART_RATE)) { + if (!isValidSplitHealthPermissions(requestedHealthPermissions)) { 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) { - 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 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" />