diff options
author | 2025-03-19 20:14:04 +0000 | |
---|---|---|
committer | 2025-03-19 19:05:00 -0700 | |
commit | 324bea02b44b8ba12e470e9f7c56bc8c087bb64a (patch) | |
tree | e44f43e3b20ae8671c4ada644a3dd8c060f1ac05 | |
parent | a80bdd287a292e2a619b2543bc92d594120ac1c8 (diff) |
Replace flag check to sdk version check
This change replace flag check to sdk version check to fix the problem
that when the new module is installed on the new version of mainline the
exported flags will have inconsistent flag value.
Test: atest PermissionControllerMockingTests GtsPermissionUiTestCases
Bug: 401592182
Flag: EXEMPT remove flag call
Relnote: M05
Change-Id: Ieb5245856d0c306870edd4211d206af8f979445f
6 files changed, 24 insertions, 28 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/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/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/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt index cb36de2b1..b73113ffc 100644 --- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt +++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/domain/usecase/GetPermissionGroupUsageDetailsUseCaseTest.kt @@ -21,10 +21,12 @@ import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager +import android.os.Build import android.os.UserHandle import android.permission.flags.Flags import android.platform.test.annotations.RequiresFlagsEnabled import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SdkSuppress import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.modules.utils.build.SdkLevel import com.android.permissioncontroller.PermissionControllerApplication @@ -846,7 +848,10 @@ class GetPermissionGroupUsageDetailsUseCaseTest { @Test @Ignore("b/365004787") - @RequiresFlagsEnabled(Flags.FLAG_LOCATION_BYPASS_PRIVACY_DASHBOARD_ENABLED) + @SdkSuppress( + minSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM, + codeName = "VanillaIceCream", + ) fun emergencyAccessesAreNotClusteredWithRegularAccesses() = runTest { Assume.assumeTrue(SdkLevel.isAtLeastV()) val appOpEvents = @@ -870,7 +875,10 @@ class GetPermissionGroupUsageDetailsUseCaseTest { } @Test - @RequiresFlagsEnabled(Flags.FLAG_LOCATION_BYPASS_PRIVACY_DASHBOARD_ENABLED) + @SdkSuppress( + minSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM, + codeName = "VanillaIceCream", + ) fun emergencyAccessesAreClustered() = runTest { Assume.assumeTrue(SdkLevel.isAtLeastV()) val appOpEvents = |