diff options
author | 2025-03-20 16:33:45 -0700 | |
---|---|---|
committer | 2025-03-20 16:33:45 -0700 | |
commit | afba1bb6158e91e1323c8a1c7370413ad4516b37 (patch) | |
tree | 0217902ad5515b0627974669ca02939f67952351 /PermissionController/src | |
parent | bee09828303e4ee750de01f7f265464dfae943cb (diff) | |
parent | a3c1eeb7eea1274bdad40ec6cafb86de905e4ba6 (diff) |
Snap for 13248265 from a3c1eeb7eea1274bdad40ec6cafb86de905e4ba6 to 25Q2-release
Change-Id: I07104fa835fcb2977b4b56f3ca5214eb1a218cc8
Diffstat (limited to 'PermissionController/src')
9 files changed, 39 insertions, 43 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/appops/data/repository/v31/AppOpRepository.kt b/PermissionController/src/com/android/permissioncontroller/appops/data/repository/v31/AppOpRepository.kt index 21ced3b28..7a59aa2bc 100644 --- a/PermissionController/src/com/android/permissioncontroller/appops/data/repository/v31/AppOpRepository.kt +++ b/PermissionController/src/com/android/permissioncontroller/appops/data/repository/v31/AppOpRepository.kt @@ -27,7 +27,6 @@ import android.app.AppOpsManager.OP_FLAG_TRUSTED_PROXIED import android.app.AppOpsManager.OP_FLAG_TRUSTED_PROXY import android.app.Application import android.os.UserHandle -import android.permission.flags.Flags import android.util.Log import com.android.modules.utils.build.SdkLevel import com.android.permissioncontroller.DeviceUtils @@ -74,7 +73,7 @@ interface AppOpRepository { */ fun getDiscreteOps( opNames: List<String>, - coroutineScope: CoroutineScope + coroutineScope: CoroutineScope, ): Flow<List<DiscretePackageOpsModel>> companion object { @@ -82,7 +81,7 @@ interface AppOpRepository { fun getInstance( application: Application, - permissionRepository: PermissionRepository + permissionRepository: PermissionRepository, ): AppOpRepository = instance ?: synchronized(this) { @@ -104,7 +103,7 @@ class AppOpRepositoryImpl( override fun getDiscreteOps( opNames: List<String>, - coroutineScope: CoroutineScope + coroutineScope: CoroutineScope, ): Flow<List<DiscretePackageOpsModel>> { return callbackFlow { var job: Job? = null @@ -112,9 +111,7 @@ class AppOpRepositoryImpl( fun sendUpdate() { if (job == null || job?.isActive == false) { - job = coroutineScope.launch(dispatcher) { - trySend(getDiscreteOps(opNames)) - } + job = coroutineScope.launch(dispatcher) { trySend(getDiscreteOps(opNames)) } } } @@ -229,10 +226,10 @@ class AppOpRepositoryImpl( packageOps.ops.map { opEntry -> AppOpUsageModel( opEntry.opStr, - opEntry.getLastAccessTime(OPS_LAST_ACCESS_FLAGS) + opEntry.getLastAccessTime(OPS_LAST_ACCESS_FLAGS), ) }, - UserHandle.getUserHandleForUid(packageOps.uid).identifier + UserHandle.getUserHandleForUid(packageOps.uid).identifier, ) } } @@ -254,7 +251,7 @@ class AppOpRepositoryImpl( if (SdkLevel.isAtLeastT()) { opNames.add(AppOpsManager.OPSTR_RECEIVE_AMBIENT_TRIGGER_AUDIO) } - if (SdkLevel.isAtLeastV() && Flags.locationBypassPrivacyDashboardEnabled()) { + if (SdkLevel.isAtLeastV()) { opNames.add(AppOpsManager.OPSTR_EMERGENCY_LOCATION) } return opNames diff --git a/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/GetPermissionGroupUsageDetailsUseCase.kt b/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/GetPermissionGroupUsageDetailsUseCase.kt index 5ba649fd3..cc49b4ef3 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/GetPermissionGroupUsageDetailsUseCase.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/GetPermissionGroupUsageDetailsUseCase.kt @@ -227,8 +227,7 @@ class GetPermissionGroupUsageDetailsUseCase( } } - private fun isLocationByPassEnabled(): Boolean = - SdkLevel.isAtLeastV() && Flags.locationBypassPrivacyDashboardEnabled() + private fun isLocationByPassEnabled(): Boolean = SdkLevel.isAtLeastV() /** * Determine if an op should be in its own cluster and hence display as an individual entry in diff --git a/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/PermissionUsageUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/PermissionUsageUtils.kt index 7f5910ac1..9526d0bdd 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/PermissionUsageUtils.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/domain/usecase/v31/PermissionUsageUtils.kt @@ -21,7 +21,6 @@ import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.os.UserHandle -import android.permission.flags.Flags import androidx.annotation.VisibleForTesting import com.android.modules.utils.build.SdkLevel import com.android.permissioncontroller.permission.data.repository.v31.PermissionRepository @@ -99,5 +98,4 @@ private fun isTelecomPackage(packageName: String, permissionGroup: String): Bool permissionGroup == Manifest.permission_group.MICROPHONE) } -fun isLocationByPassEnabled(): Boolean = - SdkLevel.isAtLeastV() && Flags.locationBypassPrivacyDashboardEnabled() +fun isLocationByPassEnabled(): Boolean = SdkLevel.isAtLeastV() diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionFragment.java index 026f108fa..39ca24a71 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionFragment.java @@ -182,10 +182,8 @@ public class AutoAppPermissionFragment extends AutoSettingsFrameFragment if (SdkLevel.isAtLeastV()) { mSensorPrivacyManager = requireContext().getSystemService(SensorPrivacyManager.class); mCameraPrivacyAllowlist = mSensorPrivacyManager.getCameraPrivacyAllowlist(); - if (Flags.addBannersToPrivacySensitiveAppsForAaos()) { - mAutomotiveLocationBypassAllowlist = - LocationUtils.getAutomotiveLocationBypassAllowlist(requireContext()); - } + mAutomotiveLocationBypassAllowlist = + LocationUtils.getAutomotiveLocationBypassAllowlist(requireContext()); } } @@ -317,13 +315,11 @@ public class AutoAppPermissionFragment extends AutoSettingsFrameFragment if (Manifest.permission_group.CAMERA.equals(mPermGroupName)) { mViewModel.getSensorStatusLiveData().observe(this, this::setSensorStatus); } - if (Flags.addBannersToPrivacySensitiveAppsForAaos()) { - if (Manifest.permission_group.LOCATION.equals(mPermGroupName)) { - mViewModel.getSensorStatusLiveData().observe(this, this::setSensorStatus); - } - if (Manifest.permission_group.MICROPHONE.equals(mPermGroupName)) { - mViewModel.getSensorStatusLiveData().observe(this, this::setSensorStatus); - } + if (Manifest.permission_group.LOCATION.equals(mPermGroupName)) { + mViewModel.getSensorStatusLiveData().observe(this, this::setSensorStatus); + } + if (Manifest.permission_group.MICROPHONE.equals(mPermGroupName)) { + mViewModel.getSensorStatusLiveData().observe(this, this::setSensorStatus); } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java index 969ac17eb..e995588b2 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java @@ -492,7 +492,7 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i } private boolean isArchivingEnabled() { - return SdkLevel.isAtLeastV() && Flags.archivingReadOnly(); + return SdkLevel.isAtLeastV(); } private void setAutoRevokeToggleState(HibernationSettingState state) { diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt index ad21ab220..d8eeb8fd9 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt @@ -30,7 +30,6 @@ import android.graphics.drawable.Drawable import android.location.LocationManager import android.os.Build import android.os.UserHandle -import android.permission.flags.Flags import androidx.annotation.RequiresApi import androidx.annotation.VisibleForTesting import androidx.lifecycle.AndroidViewModel @@ -406,8 +405,7 @@ class PermissionUsageDetailsViewModel( } } - private fun isLocationByPassEnabled(): Boolean = - SdkLevel.isAtLeastV() && Flags.locationBypassPrivacyDashboardEnabled() + private fun isLocationByPassEnabled(): Boolean = SdkLevel.isAtLeastV() fun create( app: Application, diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java index 3d1e44b6a..76ce9b273 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java @@ -40,7 +40,6 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.modules.utils.build.SdkLevel; -import com.android.permission.flags.Flags; import com.android.permissioncontroller.PermissionControllerApplication; import com.android.permissioncontroller.R; @@ -117,7 +116,7 @@ public class LocationUtils { /** Checks if the provided package is an automotive location bypass allowlisted package. */ public static boolean isAutomotiveLocationBypassAllowlistedPackage( Context context, String packageName) { - return SdkLevel.isAtLeastV() && Flags.addBannersToPrivacySensitiveAppsForAaos() + return SdkLevel.isAtLeastV() && getAutomotiveLocationBypassAllowlist(context).contains(packageName); } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt index 93a1a66df..1693b32d1 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt @@ -45,7 +45,7 @@ object PermissionMapping { listOf( Manifest.permission_group.LOCATION, Manifest.permission_group.CAMERA, - Manifest.permission_group.MICROPHONE + Manifest.permission_group.MICROPHONE, ) @JvmField @@ -55,7 +55,7 @@ object PermissionMapping { listOf( Manifest.permission_group.STORAGE, Manifest.permission_group.READ_MEDIA_AURAL, - Manifest.permission_group.READ_MEDIA_VISUAL + Manifest.permission_group.READ_MEDIA_VISUAL, ) val PARTIAL_MEDIA_PERMISSIONS: MutableSet<String> = mutableSetOf() @@ -370,7 +370,7 @@ object PermissionMapping { val appSupportsPickerPrompt = group.permissions[Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED]?.isImplicit == - false + false return if (appSupportsPickerPrompt) { PARTIAL_MEDIA_PERMISSIONS @@ -402,11 +402,7 @@ object PermissionMapping { if (opName == AppOpsManager.OPSTR_PHONE_CALL_CAMERA) { return Manifest.permission_group.CAMERA } - if ( - SdkLevel.isAtLeastV() && - Flags.locationBypassPrivacyDashboardEnabled() && - opName == AppOpsManager.OPSTR_EMERGENCY_LOCATION - ) { + if (SdkLevel.isAtLeastV() && opName == AppOpsManager.OPSTR_EMERGENCY_LOCATION) { return Manifest.permission_group.LOCATION } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java index 327142896..93e5abc70 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java @@ -1109,10 +1109,23 @@ public final class Utils { return false; } - // Always show Fitness&Wellness chip on Wear. + // Only show Fitness&Wellness chip on Wear if the app is requesting system permissions. if (Flags.replaceBodySensorPermissionEnabled() - && pm.hasSystemFeature(PackageManager.FEATURE_WATCH)) { - return true; + && pm.hasSystemFeature(PackageManager.FEATURE_WATCH)) { + Set<String> requestedPermissions = new HashSet<>(packageInfo.getRequestedPermissions()); + for (PermissionInfo permission : permissions) { + if (!requestedPermissions.contains(permission.name)) { + continue; + } + String appOpStr = AppOpsManager.permissionToOp(permission.name); + if (appOpStr != null + && !appOpStr.equals(AppOpsManager.OPSTR_READ_WRITE_HEALTH_DATA)) { + // Found system health permission. Show the chip. + return true; + } + } + // No valid system permissions are requested. + return false; } // Check in permission is already granted as we should not hide it in the UX at that point. |