From 65b85cf3a2f83729d7657e81bb001b0656a3c532 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Thu, 20 Jul 2017 09:19:20 -0400 Subject: [PATCH] Fix sound rate limiting issue Don't count notifications that were muted by some other criteria (like dnd or group alerting) against an app Test: runtest systemui-notification Change-Id: I9c94d342400306c2618c458e2ad530cd9373b3b8 Fixes: 63819441 --- .../notification/NotificationManagerService.java | 14 +++++++------- .../server/notification/BuzzBeepBlinkTest.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 1f684aa1770db..5a8ebc2cc5c92 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -3828,13 +3828,6 @@ public class NotificationManagerService extends SystemService { return true; } - // Suppressed for being too recently noisy - final String pkg = record.sbn.getPackageName(); - if (mUsageStats.isAlertRateLimited(pkg)) { - Slog.e(TAG, "Muting recently noisy " + record.getKey()); - return true; - } - // muted by listener final String disableEffects = disableNotificationEffects(record); if (disableEffects != null) { @@ -3852,6 +3845,13 @@ public class NotificationManagerService extends SystemService { return notification.suppressAlertingDueToGrouping(); } + // Suppressed for being too recently noisy + final String pkg = record.sbn.getPackageName(); + if (mUsageStats.isAlertRateLimited(pkg)) { + Slog.e(TAG, "Muting recently noisy " + record.getKey()); + return true; + } + return false; } diff --git a/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java index 807703b95a639..b02312661ab60 100644 --- a/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java +++ b/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java @@ -830,6 +830,16 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verify(mUsageStats, never()).isAlertRateLimited(any()); } + @Test + public void testPostingGroupSuppressedDoesNotAffectRateLimiting() throws Exception { + NotificationRecord summary = getBeepyNotificationRecord("a", GROUP_ALERT_CHILDREN); + summary.getNotification().flags |= Notification.FLAG_GROUP_SUMMARY; + + mService.buzzBeepBlinkLocked(summary); + + verify(mUsageStats, never()).isAlertRateLimited(any()); + } + @Test public void testCrossUserSoundMuted() throws Exception { final Notification n = new Builder(getContext(), "test")