summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt13
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java8
-rw-r--r--PermissionController/tests/inprocess/Android.bp1
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/PermissionMappingTest.kt53
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/UtilsTest.kt67
-rw-r--r--PermissionController/tests/permissionui/Android.bp1
-rw-r--r--PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/handheld/ManageCustomPermissionsFragmentTest.kt38
7 files changed, 175 insertions, 6 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt
index a3446f802..13e3a4eb7 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt
@@ -181,13 +181,18 @@ object PermissionMapping {
Manifest.permission_group.CAMERA
}
- PLATFORM_PERMISSIONS[Manifest.permission.BODY_SENSORS] = Manifest.permission_group.SENSORS
-
if (SdkLevel.isAtLeastT()) {
PLATFORM_PERMISSIONS[Manifest.permission.POST_NOTIFICATIONS] =
Manifest.permission_group.NOTIFICATIONS
- PLATFORM_PERMISSIONS[Manifest.permission.BODY_SENSORS_BACKGROUND] =
+ }
+
+ if (!Flags.replaceBodySensorPermissionEnabled()) {
+ PLATFORM_PERMISSIONS[Manifest.permission.BODY_SENSORS] =
Manifest.permission_group.SENSORS
+ if (SdkLevel.isAtLeastT()) {
+ PLATFORM_PERMISSIONS[Manifest.permission.BODY_SENSORS_BACKGROUND] =
+ Manifest.permission_group.SENSORS
+ }
}
for ((permission, permissionGroup) in PLATFORM_PERMISSIONS) {
@@ -343,7 +348,7 @@ object PermissionMapping {
val appSupportsPickerPrompt =
group.permissions[Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED]?.isImplicit ==
- false
+ false
return if (appSupportsPickerPrompt) {
PARTIAL_MEDIA_PERMISSIONS
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
index 3d3b47272..aae5cb82c 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
@@ -547,8 +547,14 @@ public final class Utils {
if (group.equals(Manifest.permission_group.UNDEFINED)) {
List<PermissionInfo> undefinedPerms = new ArrayList<>();
for (PermissionInfo permissionInfo : installedRuntime) {
+ if (Flags.replaceBodySensorPermissionEnabled()
+ && (permissionInfo.name.equals(Manifest.permission.BODY_SENSORS) ||
+ permissionInfo.name.equals(Manifest.permission.BODY_SENSORS_BACKGROUND))) {
+ continue;
+ }
+
String permGroup =
- PermissionMapping.getGroupOfPlatformPermission(permissionInfo.name);
+ PermissionMapping.getGroupOfPlatformPermission(permissionInfo.name);
if (permGroup == null || permGroup.equals(Manifest.permission_group.UNDEFINED)) {
undefinedPerms.add(permissionInfo);
}
diff --git a/PermissionController/tests/inprocess/Android.bp b/PermissionController/tests/inprocess/Android.bp
index 4cd9e0e6f..49e4e9474 100644
--- a/PermissionController/tests/inprocess/Android.bp
+++ b/PermissionController/tests/inprocess/Android.bp
@@ -53,6 +53,7 @@ android_test {
// This may result in two flag libs being included. This should only be used for Flag
//string referencing for test annotations.
"com.android.permission.flags-aconfig-java-export",
+ "android.permission.flags-aconfig-java-export",
],
data: [
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/PermissionMappingTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/PermissionMappingTest.kt
index 2c82269a6..e8e910c4e 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/PermissionMappingTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/PermissionMappingTest.kt
@@ -19,10 +19,19 @@ package com.android.permissioncontroller.permission.util
import android.Manifest
import android.app.AppOpsManager
import android.health.connect.HealthPermissions
+import android.os.Build
+import android.permission.flags.Flags
+import android.platform.test.annotations.RequiresFlagsDisabled
+import android.platform.test.annotations.RequiresFlagsEnabled
+import android.platform.test.flag.junit.CheckFlagsRule
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SdkSuppress
import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.google.common.truth.Truth.assertThat
+import org.junit.Assert.assertNotNull
+import org.junit.Assert.assertNull
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -31,6 +40,7 @@ import org.junit.runner.RunWith
class PermissionMappingTest {
@JvmField @Rule val instantTaskExecutorRule = InstantTaskExecutorRule()
+ @JvmField @Rule val checkFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
@Test
fun testGetPlatformPermissionGroupForOp_healthPermissionGroup() {
@@ -81,4 +91,47 @@ class PermissionMappingTest {
PermissionMapping.getGroupOfPlatformPermission(Manifest.permission.READ_CONTACTS)
)
}
+
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ @RequiresFlagsEnabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED)
+ @Test
+ fun getGroupOfPlatformPermission_replaceBodySensorFlagEnabled_notHaveSensorsGroup() {
+ assertNull(PermissionMapping.getGroupOfPlatformPermission(Manifest.permission.BODY_SENSORS))
+ assertNull(
+ PermissionMapping.getGroupOfPlatformPermission(
+ Manifest.permission.BODY_SENSORS_BACKGROUND
+ )
+ )
+ }
+
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED)
+ @Test
+ fun getGroupOfPlatformPermission_replaceBodySensorFlagDisabled_haveSensorsGroup() {
+ assertNotNull(
+ PermissionMapping.getGroupOfPlatformPermission(Manifest.permission.BODY_SENSORS)
+ )
+ assertNotNull(
+ PermissionMapping.getGroupOfPlatformPermission(
+ Manifest.permission.BODY_SENSORS_BACKGROUND
+ )
+ )
+ }
+
+
+ @SdkSuppress(
+ minSdkVersion = Build.VERSION_CODES.TIRAMISU,
+ maxSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE,
+ )
+ @Test
+ fun getGroupOfPlatformPermission_preV_haveSensorsGroup() {
+ assertNotNull(
+ PermissionMapping.getGroupOfPlatformPermission(Manifest.permission.BODY_SENSORS)
+ )
+ assertNotNull(
+ PermissionMapping.getGroupOfPlatformPermission(
+ Manifest.permission.BODY_SENSORS_BACKGROUND
+ )
+ )
+ }
}
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/UtilsTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/UtilsTest.kt
index 54fa1900b..1cfe6a5d3 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/UtilsTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/UtilsTest.kt
@@ -16,6 +16,8 @@
package com.android.permissioncontroller.permission.util
+import android.Manifest.permission.BODY_SENSORS
+import android.Manifest.permission.BODY_SENSORS_BACKGROUND
import android.Manifest.permission.READ_CONTACTS
import android.Manifest.permission_group.ACTIVITY_RECOGNITION
import android.Manifest.permission_group.CALENDAR
@@ -38,7 +40,14 @@ import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.PackageManager.NameNotFoundException
import android.content.res.Resources
+import android.os.Build
+import android.permission.flags.Flags
+import android.platform.test.annotations.RequiresFlagsDisabled
+import android.platform.test.annotations.RequiresFlagsEnabled
+import android.platform.test.flag.junit.CheckFlagsRule
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
+import androidx.test.filters.SdkSuppress
import androidx.test.platform.app.InstrumentationRegistry
import com.android.permissioncontroller.Constants.EXTRA_SESSION_ID
import com.android.permissioncontroller.Constants.INVALID_SESSION_ID
@@ -47,11 +56,16 @@ import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.privacysources.WorkPolicyInfo
import com.google.common.truth.Truth.assertThat
import kotlin.test.assertFailsWith
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
class UtilsTest {
+
+ @JvmField @Rule val checkFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
+
private val context = InstrumentationRegistry.getInstrumentation().targetContext as Context
@JvmField @Rule val instantTaskExecutorRule = InstantTaskExecutorRule()
@@ -300,6 +314,59 @@ class UtilsTest {
assertThat(permissionInfos[0].name).isEqualTo(READ_CONTACTS)
}
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ @RequiresFlagsEnabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED)
+ @Test
+ fun getInstalledRuntimePermissionInfosForGroup_bodySensorFlagEnabled_bodySensorPermissionsNotIncluded() {
+ val permissionNamesInUndefinedGroup =
+ Utils.getInstalledRuntimePermissionInfosForGroup(context.packageManager, UNDEFINED)
+ .map { it.name }
+ val permissionNamesInSensorsGroup =
+ Utils.getInstalledRuntimePermissionInfosForGroup(context.packageManager, SENSORS)
+ .map { it.name }
+
+ assertFalse(permissionNamesInUndefinedGroup.contains(BODY_SENSORS))
+ assertFalse(permissionNamesInUndefinedGroup.contains(BODY_SENSORS_BACKGROUND))
+ assertFalse(permissionNamesInSensorsGroup.contains(BODY_SENSORS))
+ assertFalse(permissionNamesInSensorsGroup.contains(BODY_SENSORS_BACKGROUND))
+ }
+
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED)
+ @Test
+ fun getInstalledRuntimePermissionInfosForGroup_bodySensorFlagDisabled_bodySensorPermissionsIncluded() {
+ val permissionNamesInUndefinedGroup =
+ Utils.getInstalledRuntimePermissionInfosForGroup(context.packageManager, UNDEFINED)
+ .map { it.name }
+ val permissionNamesInSensorsGroup =
+ Utils.getInstalledRuntimePermissionInfosForGroup(context.packageManager, SENSORS)
+ .map { it.name }
+
+ assertFalse(permissionNamesInUndefinedGroup.contains(BODY_SENSORS))
+ assertFalse(permissionNamesInUndefinedGroup.contains(BODY_SENSORS_BACKGROUND))
+ assertTrue(permissionNamesInSensorsGroup.contains(BODY_SENSORS))
+ assertTrue(permissionNamesInSensorsGroup.contains(BODY_SENSORS_BACKGROUND))
+ }
+
+ @SdkSuppress(
+ minSdkVersion = Build.VERSION_CODES.TIRAMISU,
+ maxSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE,
+ )
+ @Test
+ fun getInstalledRuntimePermissionInfosForGroup_preV_bodySensorPermissionsIncluded() {
+ val permissionNamesInUndefinedGroup =
+ Utils.getInstalledRuntimePermissionInfosForGroup(context.packageManager, UNDEFINED)
+ .map { it.name }
+ val permissionNamesInSensorsGroup =
+ Utils.getInstalledRuntimePermissionInfosForGroup(context.packageManager, SENSORS)
+ .map { it.name }
+
+ assertFalse(permissionNamesInUndefinedGroup.contains(BODY_SENSORS))
+ assertFalse(permissionNamesInUndefinedGroup.contains(BODY_SENSORS_BACKGROUND))
+ assertTrue(permissionNamesInSensorsGroup.contains(BODY_SENSORS))
+ assertTrue(permissionNamesInSensorsGroup.contains(BODY_SENSORS_BACKGROUND))
+ }
+
@Test
fun getColorResId_validId_returnsNonZero() {
assertThat(Utils.getColorResId(context, android.R.attr.colorPrimary))
diff --git a/PermissionController/tests/permissionui/Android.bp b/PermissionController/tests/permissionui/Android.bp
index 5f177f40c..e0e8fed10 100644
--- a/PermissionController/tests/permissionui/Android.bp
+++ b/PermissionController/tests/permissionui/Android.bp
@@ -47,6 +47,7 @@ android_test {
"androidx.test.ext.truth",
"androidx.test.rules",
"androidx.test.uiautomator_uiautomator",
+ "android.permission.flags-aconfig-java-export",
"com.android.permission.flags-aconfig-java-export",
"compatibility-device-util-axt",
"flag-junit",
diff --git a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/handheld/ManageCustomPermissionsFragmentTest.kt b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/handheld/ManageCustomPermissionsFragmentTest.kt
index b38f5f40a..08143f77f 100644
--- a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/handheld/ManageCustomPermissionsFragmentTest.kt
+++ b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/handheld/ManageCustomPermissionsFragmentTest.kt
@@ -17,11 +17,18 @@
package com.android.permissioncontroller.permissionui.ui.handheld
import android.content.Intent
+import android.os.Build
+import android.permission.flags.Flags
import android.permission.cts.PermissionUtils.grantPermission
import android.permission.cts.PermissionUtils.install
import android.permission.cts.PermissionUtils.revokePermission
import android.permission.cts.PermissionUtils.uninstallApp
+import android.platform.test.annotations.RequiresFlagsDisabled
+import android.platform.test.annotations.RequiresFlagsEnabled
+import android.platform.test.flag.junit.CheckFlagsRule
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SdkSuppress
import androidx.test.uiautomator.By
import com.android.compatibility.common.util.SystemUtil.eventually
import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity
@@ -32,13 +39,18 @@ import com.android.permissioncontroller.permissionui.wakeUpScreen
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Assert.assertNotNull
+import org.junit.Assert.assertNull
import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
/** Simple tests for {@link ManageCustomPermissionsFragment} */
@RunWith(AndroidJUnit4::class)
class ManageCustomPermissionsFragmentTest : BaseHandheldPermissionUiTest() {
+
+ @JvmField @Rule val checkFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
+
private val ONE_PERMISSION_DEFINER_APK =
"/data/local/tmp/pc-permissionui/" + "PermissionUiDefineAdditionalPermissionApp.apk"
private val PERMISSION_USER_APK =
@@ -95,14 +107,38 @@ class ManageCustomPermissionsFragmentTest : BaseHandheldPermissionUiTest() {
eventually { assertThat(getUsageCountsFromUi(PERM_LABEL)).isEqualTo(original) }
}
+
+ @SdkSuppress(
+ minSdkVersion = Build.VERSION_CODES.TIRAMISU,
+ maxSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE,
+ )
+ @Test
+ fun testFindBodySensor_preV_labelDisplayed() {
+ if (waitFindObjectOrNull(By.textContains(BODY_SENSORS_LABEL)) == null) {
+ waitFindObject(By.textContains(ADDITIONAL_PERMISSIONS_LABEL)).click()
+ assertNotNull(waitFindObjectOrNull(By.textContains(BODY_SENSORS_LABEL)))
+ }
+ }
+
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED)
@Test
- fun bodySensorsEitherDisplayedInMainPageOrInAdditional() {
+ fun testFindBodySensor_replaceBodySensorFlagDisabled_labelDisplayed() {
if (waitFindObjectOrNull(By.textContains(BODY_SENSORS_LABEL)) == null) {
waitFindObject(By.textContains(ADDITIONAL_PERMISSIONS_LABEL)).click()
assertNotNull(waitFindObjectOrNull(By.textContains(BODY_SENSORS_LABEL)))
}
}
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ @RequiresFlagsEnabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED)
+ @Test
+ fun testFindBodySensor_replaceBodySensorFlagEnabled_labelNotDisplayed() {
+ assertNull(waitFindObjectOrNull(By.textContains(BODY_SENSORS_LABEL)))
+ waitFindObject(By.textContains(ADDITIONAL_PERMISSIONS_LABEL)).click()
+ assertNull(waitFindObjectOrNull(By.textContains(BODY_SENSORS_LABEL)))
+ }
+
@After
fun tearDown() {
uninstallApp(DEFINER_PKG)