diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-18 10:55:10 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-18 10:55:10 +0000 |
commit | b7db0039eac97f6c50dd248b7b512b8c950e5777 (patch) | |
tree | 6a1ba20e0694671e7d5190bf2f38f85253c35208 | |
parent | 42e2bc150fcc2ae2d01b0a5ce4283711d93c891a (diff) | |
parent | a81edefdc1d9b23c467ed5f1f5658531b69062a4 (diff) | |
download | Permission-android13-platform-release.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/25238865'] into tm-platform-release.android-platform-13.0.0_r18android-platform-13.0.0_r17android-platform-13.0.0_r16android13-platform-release
Change-Id: I3d00508d8bc5a1bfa4a5bdf87e94c75d77f8fdd6
4 files changed, 62 insertions, 10 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceAppStreamingRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceAppStreamingRoleBehavior.java index ca4af2355..8e33980a1 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceAppStreamingRoleBehavior.java +++ b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceAppStreamingRoleBehavior.java @@ -17,10 +17,13 @@ package com.android.permissioncontroller.role.model; import android.content.Context; +import android.os.Process; +import android.os.UserHandle; import androidx.annotation.NonNull; import com.android.permissioncontroller.role.utils.NotificationUtils; +import com.android.permissioncontroller.role.utils.UserUtils; /** * Class for behavior of the "App Streaming" Companion device profile role. @@ -29,11 +32,17 @@ public class CompanionDeviceAppStreamingRoleBehavior implements RoleBehavior { @Override public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - NotificationUtils.grantNotificationAccessForPackage(context, packageName); + UserHandle user = Process.myUserHandle(); + if (!UserUtils.isManagedProfile(user, context)) { + NotificationUtils.grantNotificationAccessForPackage(context, packageName); + } } @Override public void revoke(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - NotificationUtils.revokeNotificationAccessForPackage(context, packageName); + UserHandle user = Process.myUserHandle(); + if (!UserUtils.isManagedProfile(user, context)) { + NotificationUtils.revokeNotificationAccessForPackage(context, packageName); + } } } diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceComputerRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceComputerRoleBehavior.java index 1d9409f1f..0d184d940 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceComputerRoleBehavior.java +++ b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceComputerRoleBehavior.java @@ -17,10 +17,13 @@ package com.android.permissioncontroller.role.model; import android.content.Context; +import android.os.Process; +import android.os.UserHandle; import androidx.annotation.NonNull; import com.android.permissioncontroller.role.utils.NotificationUtils; +import com.android.permissioncontroller.role.utils.UserUtils; /** * Class for behavior of the "Computer" Companion device profile role. @@ -29,11 +32,17 @@ public class CompanionDeviceComputerRoleBehavior implements RoleBehavior { @Override public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - NotificationUtils.grantNotificationAccessForPackage(context, packageName); + UserHandle user = Process.myUserHandle(); + if (!UserUtils.isManagedProfile(user, context)) { + NotificationUtils.grantNotificationAccessForPackage(context, packageName); + } } @Override public void revoke(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - NotificationUtils.revokeNotificationAccessForPackage(context, packageName); + UserHandle user = Process.myUserHandle(); + if (!UserUtils.isManagedProfile(user, context)) { + NotificationUtils.revokeNotificationAccessForPackage(context, packageName); + } } } diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java index 75675fb00..c38c784c6 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java +++ b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java @@ -17,10 +17,13 @@ package com.android.permissioncontroller.role.model; import android.content.Context; +import android.os.Process; +import android.os.UserHandle; import androidx.annotation.NonNull; import com.android.permissioncontroller.role.utils.NotificationUtils; +import com.android.permissioncontroller.role.utils.UserUtils; /** * Class for behavior of the "watch" Companion device profile role. @@ -29,11 +32,17 @@ public class CompanionDeviceWatchRoleBehavior implements RoleBehavior { @Override public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - NotificationUtils.grantNotificationAccessForPackage(context, packageName); + UserHandle user = Process.myUserHandle(); + if (!UserUtils.isManagedProfile(user, context)) { + NotificationUtils.grantNotificationAccessForPackage(context, packageName); + } } @Override public void revoke(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - NotificationUtils.revokeNotificationAccessForPackage(context, packageName); + UserHandle user = Process.myUserHandle(); + if (!UserUtils.isManagedProfile(user, context)) { + NotificationUtils.revokeNotificationAccessForPackage(context, packageName); + } } } diff --git a/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java b/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java index cd7a6b8a5..68c1e6176 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java +++ b/PermissionController/src/com/android/permissioncontroller/role/utils/UserUtils.java @@ -39,16 +39,41 @@ public class UserUtils { /** * Check whether a user is a profile. * - * @param user the user to check + * @param user the user to check * @param context the {@code Context} to retrieve system services - * * @return whether the user is a profile */ public static boolean isProfile(@NonNull UserHandle user, @NonNull Context context) { + return isManagedProfile(user, context) || isCloneProfile(user, context); + } + + /** + * Check whether a user is a managed profile. + * + * @param user the user to check + * @param context the {@code Context} to retrieve system services + * @return whether the user is a managed profile + */ + public static boolean isManagedProfile(@NonNull UserHandle user, @NonNull Context context) { + Context userContext = getUserContext(context, user); + UserManager userUserManager = userContext.getSystemService(UserManager.class); + return userUserManager.isManagedProfile(user.getIdentifier()); + } + + /** + * Check whether a user is a clone profile. + * + * @param user the user to check + * @param context the {@code Context} to retrieve system services + * @return whether the user is a clone profile + */ + public static boolean isCloneProfile(@NonNull UserHandle user, @NonNull Context context) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + return false; + } Context userContext = getUserContext(context, user); UserManager userUserManager = userContext.getSystemService(UserManager.class); - return userUserManager.isManagedProfile(user.getIdentifier()) || ( - Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && userUserManager.isCloneProfile()); + return userUserManager.isCloneProfile(); } /** |