Do not send AccessibilityEvent if notification is for different user.

Bug: 237540408
Test: BuzzBeepBlinkTest#testA11yCrossUserEventNotSent
Change-Id: I62a875e26e214847ec72ce3c41b4f2fa8e597e07
Merged-In: I62a875e26e214847ec72ce3c41b4f2fa8e597e07
This commit is contained in:
Daniel Norman
2022-08-12 11:40:41 -07:00
parent 750c978db5
commit 18f2ec86d6
2 changed files with 17 additions and 1 deletions

View File

@@ -5922,7 +5922,8 @@ public class NotificationManagerService extends SystemService {
boolean sentAccessibilityEvent = false; boolean sentAccessibilityEvent = false;
// If the notification will appear in the status bar, it should send an accessibility // If the notification will appear in the status bar, it should send an accessibility
// event // event
if (!record.isUpdate && record.getImportance() > IMPORTANCE_MIN) { if (!record.isUpdate && record.getImportance() > IMPORTANCE_MIN
&& isNotificationForCurrentUser(record)) {
sendAccessibilityEvent(record); sendAccessibilityEvent(record);
sentAccessibilityEvent = true; sentAccessibilityEvent = true;
} }

View File

@@ -1220,6 +1220,21 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase {
verify(mAccessibilityService, times(1)).sendAccessibilityEvent(any(), anyInt()); verify(mAccessibilityService, times(1)).sendAccessibilityEvent(any(), anyInt());
} }
@Test
public void testA11yCrossUserEventNotSent() throws Exception {
final Notification n = new Builder(getContext(), "test")
.setSmallIcon(android.R.drawable.sym_def_app_icon).build();
int userId = mUser.getIdentifier() + 1;
StatusBarNotification sbn = new StatusBarNotification(mPkg, mPkg, 0, mTag, mUid,
mPid, n, UserHandle.of(userId), null, System.currentTimeMillis());
NotificationRecord r = new NotificationRecord(getContext(), sbn,
new NotificationChannel("test", "test", IMPORTANCE_HIGH));
mService.buzzBeepBlinkLocked(r);
verify(mAccessibilityService, never()).sendAccessibilityEvent(any(), anyInt());
}
@Test @Test
public void testLightsScreenOn() { public void testLightsScreenOn() {
mService.mScreenOn = true; mService.mScreenOn = true;