mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-22 06:04:57 -05:00
66 lines
3.3 KiB
Diff
66 lines
3.3 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Steve Elliott <steell@google.com>
|
||
|
Date: Tue, 22 Jun 2021 13:58:48 -0400
|
||
|
Subject: [PATCH] Don't attach private Notification to A11yEvent when user
|
||
|
locked
|
||
|
|
||
|
Fixes: 159624555
|
||
|
Test: manual, atest
|
||
|
Change-Id: Ib44f1d3695d2b31bee4f8ccae3f948c83f3b40b6
|
||
|
Merged-In: Ib44f1d3695d2b31bee4f8ccae3f948c83f3b40b6
|
||
|
(cherry picked from commit 54fbccc2934eae844550d851480d5448c2542f1d)
|
||
|
(cherry picked from commit 93f167b8f577027f5744dc8c03c8f4c256735eb8)
|
||
|
---
|
||
|
.../NotificationManagerService.java | 23 +++++++++++++++----
|
||
|
1 file changed, 18 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
|
||
|
index 4a827dc6cfef..7ced1f96cc49 100644
|
||
|
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
|
||
|
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
|
||
|
@@ -3081,7 +3081,7 @@ public class NotificationManagerService extends SystemService {
|
||
|
if (!(record.isUpdate
|
||
|
&& (notification.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0)) {
|
||
|
|
||
|
- sendAccessibilityEvent(notification, record.sbn.getPackageName());
|
||
|
+ sendAccessibilityEvent(record);
|
||
|
|
||
|
if (canBeep && hasValidSound) {
|
||
|
boolean looping =
|
||
|
@@ -3508,18 +3508,31 @@ public class NotificationManagerService extends SystemService {
|
||
|
return (x < low) ? low : ((x > high) ? high : x);
|
||
|
}
|
||
|
|
||
|
- void sendAccessibilityEvent(Notification notification, CharSequence packageName) {
|
||
|
+ void sendAccessibilityEvent(NotificationRecord record) {
|
||
|
AccessibilityManager manager = AccessibilityManager.getInstance(getContext());
|
||
|
if (!manager.isEnabled()) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
- AccessibilityEvent event =
|
||
|
+ final Notification notification = record.getNotification();
|
||
|
+ final CharSequence packageName = record.sbn.getPackageName();
|
||
|
+ final AccessibilityEvent event =
|
||
|
AccessibilityEvent.obtain(AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED);
|
||
|
event.setPackageName(packageName);
|
||
|
event.setClassName(Notification.class.getName());
|
||
|
- event.setParcelableData(notification);
|
||
|
- CharSequence tickerText = notification.tickerText;
|
||
|
+ final int visibilityOverride = record.getPackageVisibilityOverride();
|
||
|
+ final int notifVisibility = visibilityOverride == NotificationManager.VISIBILITY_NO_OVERRIDE
|
||
|
+ ? notification.visibility : visibilityOverride;
|
||
|
+ final int userId = record.getUser().getIdentifier();
|
||
|
+ final boolean needPublic = userId >= 0 && mKeyguardManager.isDeviceLocked(userId);
|
||
|
+ if (needPublic && notifVisibility != Notification.VISIBILITY_PUBLIC) {
|
||
|
+ // Emit the public version if we're on the lockscreen and this notification isn't
|
||
|
+ // publicly visible.
|
||
|
+ event.setParcelableData(notification.publicVersion);
|
||
|
+ } else {
|
||
|
+ event.setParcelableData(notification);
|
||
|
+ }
|
||
|
+ final CharSequence tickerText = notification.tickerText;
|
||
|
if (!TextUtils.isEmpty(tickerText)) {
|
||
|
event.getText().add(tickerText);
|
||
|
}
|