Merge "Ensure Notification re-post with setOnlyAlertOnce(true) silences sound."

This commit is contained in:
Tyler Gunn
2018-07-17 20:29:59 +00:00
committed by Gerrit Code Review
2 changed files with 25 additions and 0 deletions

View File

@@ -4081,6 +4081,8 @@ public class NotificationManagerService extends SystemService {
buzz = playVibration(record, vibration, hasValidSound);
}
} else if ((record.getFlags() & Notification.FLAG_INSISTENT) != 0) {
hasValidSound = false;
}
}
}

View File

@@ -191,6 +191,11 @@ public class BuzzBeepBlinkTest extends NotificationTestCase {
true /* noisy */, false /* buzzy*/, false /* lights */);
}
private NotificationRecord getInsistentBeepyOnceNotification() {
return getNotificationRecord(mId, true /* insistent */, true /* once */,
true /* noisy */, false /* buzzy*/, false /* lights */);
}
private NotificationRecord getInsistentBeepyLeanbackNotification() {
return getLeanbackNotificationRecord(mId, true /* insistent */, false /* once */,
true /* noisy */, false /* buzzy*/, false /* lights */);
@@ -498,6 +503,24 @@ public class BuzzBeepBlinkTest extends NotificationTestCase {
verifyNeverStopAudio();
}
/**
* Tests the case where the user re-posts a {@link Notification} with looping sound where
* {@link Notification.Builder#setOnlyAlertOnce(true)} has been called. This should silence
* the sound associated with the notification.
* @throws Exception
*/
@Test
public void testNoisyOnceUpdateDoesCancelAudio() throws Exception {
NotificationRecord r = getInsistentBeepyNotification();
NotificationRecord s = getInsistentBeepyOnceNotification();
s.isUpdate = true;
mService.buzzBeepBlinkLocked(r);
mService.buzzBeepBlinkLocked(s);
verifyStopAudio();
}
@Test
public void testQuietUpdateDoesNotCancelAudioFromOther() throws Exception {
NotificationRecord r = getBeepyNotification();