From 87bfaa7868a89ea5a1ec00664505677a191a4a55 Mon Sep 17 00:00:00 2001 From: Yinchu Chen Date: Thu, 13 Mar 2025 07:34:22 -0700 Subject: add waitForIdle(timeout) test item will turn on the private space mode, and this mode turns on a large number of app operations and multiuser operations, it will be easier for low-end devices to run in complete. Add test waitForIdle(timeout) to make sure time execute finish. Bug: 403200469 Test: android.app.role.cts.RoleManagerTest #openDefaultAppListAndSetDefaultAppThenIsDefaultAppForPrivateSpace Change-Id: I107c5a3e2c9e3fce6f68e6cefba0c6133bd547d0 --- tests/cts/role/src/android/app/role/cts/RoleManagerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java index 00245a086..ce1c26d2d 100644 --- a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java +++ b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java @@ -873,6 +873,9 @@ public class RoleManagerTest { assertThat(privateProfile).isNotNull(); installPackage(APP_APK_PATH, privateProfile); installPackage(APP_CLONE_APK_PATH, privateProfile); + + UiAutomatorUtils.getUiDevice().waitForIdle(30 * 1000); + addRoleHolderAsUser(ROLE_NAME, APP_CLONE_PACKAGE_NAME, privateProfile); sContext.startActivity(new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) -- cgit v1.2.3-59-g8ed1b From e27a8ccecf78fdf734827b8a023d53c5c5027b79 Mon Sep 17 00:00:00 2001 From: Xiaohui Niu Date: Mon, 17 Mar 2025 16:34:24 +0800 Subject: Catch runtime exception when telephony is not available When the telephony service is unavailable, calling emergency number check will trigger remote exception,which will be thrown as runtime exception. Bug: 404137946 Test: manual Merged-In: I1c9c20b259849ba9de39ec2fdfd73b15e017baa0 Change-Id: Iff61163c265563f4988247dd22668f1c2ea30d02 --- service/java/com/android/ecm/EnhancedConfirmationService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/java/com/android/ecm/EnhancedConfirmationService.java b/service/java/com/android/ecm/EnhancedConfirmationService.java index af2e81133..515f70add 100644 --- a/service/java/com/android/ecm/EnhancedConfirmationService.java +++ b/service/java/com/android/ecm/EnhancedConfirmationService.java @@ -162,7 +162,7 @@ public class EnhancedConfirmationService extends SystemService { if (number != null && mTelephonyManager.isEmergencyNumber(number)) { return CALL_TYPE_EMERGENCY; } - } catch (IllegalStateException | UnsupportedOperationException e) { + } catch (RuntimeException e) { // If either of these are thrown, the telephony service is not available on the current // device, either because the device lacks telephony calling, or the telephony service // is unavailable. -- cgit v1.2.3-59-g8ed1b From 1c59a00c2198a0a408bdb26b4515600d9475946f Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 18 Mar 2025 19:05:19 -0700 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I5fa2465415f30138cfc7483480f2506afe12fa48 --- PermissionController/res/values-de/strings.xml | 2 +- PermissionController/res/values-el/strings.xml | 10 +++++----- PermissionController/res/values-es/strings.xml | 4 ++-- PermissionController/res/values-zh-rCN/strings.xml | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/PermissionController/res/values-de/strings.xml b/PermissionController/res/values-de/strings.xml index 8d52ca43d..69bcee8b4 100644 --- a/PermissionController/res/values-de/strings.xml +++ b/PermissionController/res/values-de/strings.xml @@ -443,7 +443,7 @@ "Für dein Gerät optimiert" "Sonstige" "Keine" - "(System-Standard­einstellung)" + "(System-Stan­dard­einstellung)" "Keine Apps" "Andere NFC‑Dienste" "Ausgewählt" diff --git a/PermissionController/res/values-el/strings.xml b/PermissionController/res/values-el/strings.xml index 97f62ba24..b066c75ca 100644 --- a/PermissionController/res/values-el/strings.xml +++ b/PermissionController/res/values-el/strings.xml @@ -455,13 +455,13 @@ "Δεν υποστηρίζει προφίλ εργασίας" "Σημείωση: Εάν έχετε ορίσει ένα κλείδωμα οθόνης και επανεκκινήσετε τη συσκευή, η εκκίνηση αυτής της εφαρμογής δεν θα είναι δυνατή έως ότου ξεκλειδώσετε τη συσκευή σας." "Ο βοηθός θα μπορεί να διαβάσει πληροφορίες σχετικά με τις εφαρμογές που χρησιμοποιούνται στο σύστημά σας, συμπεριλαμβανομένων πληροφοριών που είναι ορατές στην οθόνη σας ή προσβάσιμες εντός των εφαρμογών." - "Κοινοποίηση δεδομένων εντοπισμού σφαλμάτων" - "Κοινοποίηση λεπτομερ. δεδομ. εντοπισμού σφαλμάτων;" - "Η εφαρμογή %1$s θέλει να ανεβάσει πληροφορίες εντοπισμού σφαλμάτων." - "Κοινοπ. δεδομ. εντοπισμού και διόρθωσης σφαλμάτων;" + "Κοινοποίηση δεδομένων αποσφαλμάτωσης" + "Κοινοποίηση λεπτομερ. δεδομ. αποσφαλμάτωσης;" + "Η εφαρμογή %1$s θέλει να ανεβάσει πληροφορίες αποσφαλμάτωσης." + "Κοινοπ. δεδομ. αποσφαλμάτωσης;" "Το σύστημα εντόπισε ένα πρόβλημα." "Η εφαρμογή %1$s ζητάει να ανεβάσει μια αναφορά σφάλματος από αυτή τη συσκευή η οποία λήφθηκε στις %2$s, %3$s. Οι αναφορές σφάλματος περιλαμβάνουν προσωπικά στοιχεία σχετικά με τη συσκευή σας ή στοιχεία που έχουν καταγράψει οι εφαρμογές, για παράδειγμα, ονόματα χρηστών, δεδομένα τοποθεσίας, αναγνωριστικά συσκευών και πληροφορίες δικτύου. Να κοινοποιείτε τις αναφορές σφάλματος μόνο σε άτομα και εφαρμογές στα οποία θεωρείτε ότι μπορείτε να εμπιστεύεστε αυτές τις πληροφορίες.\n\nΝα επιτραπεί στην εφαρμογή %4$s να ανεβάσει μια αναφορά σφάλματος;" - "Παρουσιάστηκε ένα σφάλμα κατά την επεξεργασία της αναφοράς σφάλματος για την εφαρμογή %1$s. Γι\' αυτόν τον λόγο, η κοινοποίηση λεπτομερών δεδομένων εντοπισμού και διόρθωσης σφαλμάτων απορρίφθηκε. Λυπούμαστε για τη διακοπή." + "Παρουσιάστηκε ένα σφάλμα κατά την επεξεργασία της αναφοράς σφάλματος για την εφαρμογή %1$s. Γι\' αυτόν τον λόγο, η κοινοποίηση λεπτομερών δεδομένων αποσφαλμάτωσης απορρίφθηκε. Λυπούμαστε για τη διακοπή." "Να επιτρέπεται" "Να μην επιτρέπεται" "Σύνθετες ρυθμίσεις" diff --git a/PermissionController/res/values-es/strings.xml b/PermissionController/res/values-es/strings.xml index 6c2e76289..6ec8bb7b1 100644 --- a/PermissionController/res/values-es/strings.xml +++ b/PermissionController/res/values-es/strings.xml @@ -252,13 +252,13 @@ "Actualmente denegado / Último acceso: %1$s" "No ha accedido nunca" "Denegado / Último acceso: Nunca" - "Permitidas" + "Con permiso" "Con permiso siempre" "Permitidas solo mientras se usan" "Pueden acceder solo al contenido multimedia" "Pueden gestionar todos los archivos" "Preguntar siempre" - "No permitido" + "Sin permiso" "%1$s en %2$s" "Ver más aplicaciones que pueden acceder a todos los archivos" "{count,plural, =1{1 día}many{# días}other{# días}}" diff --git a/PermissionController/res/values-zh-rCN/strings.xml b/PermissionController/res/values-zh-rCN/strings.xml index 59168c3ae..6e1a2d1a3 100644 --- a/PermissionController/res/values-zh-rCN/strings.xml +++ b/PermissionController/res/values-zh-rCN/strings.xml @@ -196,7 +196,7 @@ "确切位置" "大致位置" "使用确切位置" - "确切位置关闭时,应用可以获取您的大致位置" + "精确位置关闭时,应用可以获取您的大致位置" "%1$s权限" "是否允许此应用获得“%1$s”权限" "此应用在%2$s上的%1$s访问权限" @@ -487,8 +487,8 @@ "要允许“<b>%1$s</b>”查找、连接到附近设备以及确定附近设备的相对位置吗?" "要允许<b>%1$s</b>在<b>%2$s</b>上查找、连接到附近设备以及确定附近设备的相对位置吗?" "要允许<b>%1$s</b>查找、连接附近设备以及确定附近设备的相对位置吗?""您可以在“设置”中允许。" - "要将“<b>%1$s</b>”可以使用的位置信息从大致位置改为确切位置吗?" - "要将<b>%1$s</b>在<b>%2$s</b>上的位置信息访问权限从大致位置信息改为确切位置信息吗?" + "要将“<b>%1$s</b>”可以使用的位置信息从大致位置改为精确位置吗?" + "要将<b>%1$s</b>在<b>%2$s</b>上的位置信息访问权限从大致位置信息改为精确位置信息吗?" "要允许“<b>%1$s</b>”获取此设备的大致位置信息吗?" "要允许<b>%1$s</b>获取<b>%2$s</b>的大致位置信息吗?" "确切位置" -- cgit v1.2.3-59-g8ed1b From f9d4f08225ac46349cd5877f240dc125fc5fb95a Mon Sep 17 00:00:00 2001 From: Zhi Dou Date: Wed, 19 Mar 2025 20:36:02 +0000 Subject: 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: m Flag: EXEMPT remove flag call Relnote: M0 Bug: 401592182 Change-Id: Ib768880af8eddc96db44a35860042e1e0a0d99a7 --- .../permission/ui/auto/AutoAppPermissionFragment.java | 18 +++++++----------- .../permission/utils/LocationUtils.java | 3 +-- 2 files changed, 8 insertions(+), 13 deletions(-) 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/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); } -- cgit v1.2.3-59-g8ed1b From 6b45ee23a29c4fe87573b6b7f38a869c6b480c4a Mon Sep 17 00:00:00 2001 From: Zhi Dou Date: Wed, 19 Mar 2025 20:49:15 +0000 Subject: 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: m Flag: EXEMPT remove flag call Relnote: M0 Bug: 401592182 Change-Id: I986e9c9b965683a4bbc50319980cdf035fa30a1c --- .../permission/ui/handheld/AppPermissionGroupsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { -- cgit v1.2.3-59-g8ed1b From 1378bb8df731e8be31bb2372741b4ab1ccacddef Mon Sep 17 00:00:00 2001 From: Justin Lannin Date: Wed, 19 Mar 2025 14:04:37 -0700 Subject: Wear: Hide health group if not requesting system permissions. This fixes a corner case where if a Wear app is only requesting non-system health permissions, the chip should not be shown. As a consequence this would hide apps only requesting something invalid on Wear like READ_STEPS. This would also hide apps only requesting READ_HEALTH_DATA_IN_BACKGROUND. Bug: 401089783 Test: Local test with app only requesting non-system permissions. See that the chip is hidden. Flag: android.permission.flags.replace_body_sensor_permission_enabled Change-Id: Id2533e06ee9e6df30c5bf2bbdeba04e427810027 Relnote: Fix health chip shown corner case on Wear. --- .../permissioncontroller/permission/utils/Utils.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) 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 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. -- cgit v1.2.3-59-g8ed1b From a4f5f21095566bf36516a8e5bce06799ed8a7b59 Mon Sep 17 00:00:00 2001 From: Yinchu Chen Date: Thu, 13 Mar 2025 07:34:22 -0700 Subject: add waitForIdle(timeout) test item will turn on the private space mode, and this mode turns on a large number of app operations and multiuser operations, it will be easier for low-end devices to run in complete. Add test waitForIdle(timeout) to make sure time execute finish. Bug: 403200469 Test: android.app.role.cts.RoleManagerTest #openDefaultAppListAndSetDefaultAppThenIsDefaultAppForPrivateSpace Change-Id: I107c5a3e2c9e3fce6f68e6cefba0c6133bd547d0 Merged-In: I107c5a3e2c9e3fce6f68e6cefba0c6133bd547d0 --- tests/cts/role/src/android/app/role/cts/RoleManagerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java index 56f681388..401bc097b 100644 --- a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java +++ b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java @@ -856,6 +856,9 @@ public class RoleManagerTest { assertThat(privateProfile).isNotNull(); installPackage(APP_APK_PATH, privateProfile); installPackage(APP_FOR_PROFILE_APK_PATH, privateProfile); + + UiAutomatorUtils.getUiDevice().waitForIdle(30 * 1000); + addRoleHolderAsUser(ROLE_NAME, APP_FOR_PROFILE_PACKAGE_NAME, privateProfile); sContext.startActivity(new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) -- cgit v1.2.3-59-g8ed1b From 604c7bd665a67e300b4b5a94e2f6789ba317ee81 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Wed, 19 Mar 2025 18:54:49 -0700 Subject: testSendSms requires messaging, not just telephony Bug: 403769622 Test: CtsPermissionTestCases:android.permission.cts.NoSystemFunctionPermissionTest#testSendSms Flag: TEST_ONLY Relnote: N/A Change-Id: I4efbfd6fea5f37db26e323245fe70a2e3e532944 --- .../src/android/permission/cts/NoSystemFunctionPermissionTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/cts/permission/src/android/permission/cts/NoSystemFunctionPermissionTest.java b/tests/cts/permission/src/android/permission/cts/NoSystemFunctionPermissionTest.java index 437aa19c4..ce724b13e 100644 --- a/tests/cts/permission/src/android/permission/cts/NoSystemFunctionPermissionTest.java +++ b/tests/cts/permission/src/android/permission/cts/NoSystemFunctionPermissionTest.java @@ -166,7 +166,8 @@ public class NoSystemFunctionPermissionTest extends AndroidTestCase { */ @SmallTest public void testSendSms() { - if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { + if (!getContext().getPackageManager().hasSystemFeature( + PackageManager.FEATURE_TELEPHONY_MESSAGING)) { return; } -- cgit v1.2.3-59-g8ed1b From 324bea02b44b8ba12e470e9f7c56bc8c087bb64a Mon Sep 17 00:00:00 2001 From: Zhi Dou Date: Wed, 19 Mar 2025 20:14:04 +0000 Subject: 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 --- .../appops/data/repository/v31/AppOpRepository.kt | 17 +++++++---------- .../v31/GetPermissionGroupUsageDetailsUseCase.kt | 3 +-- .../domain/usecase/v31/PermissionUsageUtils.kt | 4 +--- .../ui/model/v31/PermissionUsageDetailsViewModel.kt | 4 +--- .../permission/utils/PermissionMapping.kt | 12 ++++-------- .../GetPermissionGroupUsageDetailsUseCaseTest.kt | 12 ++++++++++-- 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, - coroutineScope: CoroutineScope + coroutineScope: CoroutineScope, ): Flow> 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, - coroutineScope: CoroutineScope + coroutineScope: CoroutineScope, ): Flow> { 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 = 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 = -- cgit v1.2.3-59-g8ed1b