Need to check current user when triggering notification lights

Notification Lights also requires user check like sound and vibration.
Otherwise, lights can occur without notifications.

Test: runtest BuzzBeepBlinkTest

Change-Id: I625db35796b7a479283ce51973ad2350559bd47f
This commit is contained in:
woongki min
2020-02-11 15:56:56 +09:00
parent a77fbc2539
commit 7d33321c73
2 changed files with 20 additions and 0 deletions

View File

@@ -5981,6 +5981,10 @@ public class NotificationManagerService extends SystemService {
if (isInCall() || mScreenOn) {
return false;
}
// check current user
if (!isNotificationForCurrentUser(record)) {
return false;
}
return true;
}

View File

@@ -1291,6 +1291,22 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase {
assertEquals(-1, group.getLastAudiblyAlertedMs());
}
@Test
public void testLightsCheckCurrentUser() {
final Notification n = new Builder(getContext(), "test")
.setSmallIcon(android.R.drawable.sym_def_app_icon).build();
int userId = mUser.getIdentifier() + 10;
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);
verifyNeverLights();
assertFalse(r.isInterruptive());
assertEquals(-1, r.getLastAudiblyAlertedMs());
}
@Test
public void testListenerHintCall() throws Exception {
NotificationRecord r = getCallRecord(1, true);