diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 16b5fb1e4d7a9..716120bccce0f 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -459,6 +459,15 @@ public class NotificationManagerService extends SystemService { @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.R) private static final long NOTIFICATION_TRAMPOLINE_BLOCK = 167676448L; + /** + * Activity starts coming from broadcast receivers or services in response to notification and + * notification action clicks will be blocked for UX and performance reasons for previously + * exempt role holders (browser). + */ + @ChangeId + @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.S_V2) + private static final long NOTIFICATION_TRAMPOLINE_BLOCK_FOR_EXEMPT_ROLES = 227752274L; + /** * Whether a notification listeners can understand new, more specific, cancellation reasons. */ @@ -11540,7 +11549,8 @@ public class NotificationManagerService extends SystemService { private boolean blockTrampoline(int uid) { if (mRoleObserver != null && mRoleObserver.isUidExemptFromTrampolineRestrictions(uid)) { - return false; + return CompatChanges.isChangeEnabled(NOTIFICATION_TRAMPOLINE_BLOCK_FOR_EXEMPT_ROLES, + uid); } return CompatChanges.isChangeEnabled(NOTIFICATION_TRAMPOLINE_BLOCK, uid); }