Merge "NoMan: Cancel previous instance of ignored notification" into lmp-mr1-dev

This commit is contained in:
Christoph Studer
2015-01-08 18:44:21 +00:00
committed by Android (Google) Code Review

View File

@@ -1829,7 +1829,7 @@ public class NotificationManagerService extends SystemService {
// can to avoid extracting signals. // can to avoid extracting signals.
handleGroupedNotificationLocked(r, old, callingUid, callingPid); handleGroupedNotificationLocked(r, old, callingUid, callingPid);
boolean ignoreNotification = boolean ignoreNotification =
removeUnusedGroupedNotificationLocked(r, callingUid, callingPid); removeUnusedGroupedNotificationLocked(r, old, callingUid, callingPid);
// This conditional is a dirty hack to limit the logging done on // This conditional is a dirty hack to limit the logging done on
// behalf of the download manager without affecting other apps. // behalf of the download manager without affecting other apps.
@@ -1966,7 +1966,8 @@ public class NotificationManagerService extends SystemService {
* *
* <p>Returns true if the given notification is a child of a group with a * <p>Returns true if the given notification is a child of a group with a
* summary, which means that SysUI will never show it, and hence the new * summary, which means that SysUI will never show it, and hence the new
* notification can be safely ignored.</p> * notification can be safely ignored. Also cancels any previous instance
* of the ignored notification.</p>
* *
* <p>For summaries, cancels all children of that group, as SysUI will * <p>For summaries, cancels all children of that group, as SysUI will
* never show them anymore.</p> * never show them anymore.</p>
@@ -1974,7 +1975,7 @@ public class NotificationManagerService extends SystemService {
* @return true if the given notification can be ignored as an optimization * @return true if the given notification can be ignored as an optimization
*/ */
private boolean removeUnusedGroupedNotificationLocked(NotificationRecord r, private boolean removeUnusedGroupedNotificationLocked(NotificationRecord r,
int callingUid, int callingPid) { NotificationRecord old, int callingUid, int callingPid) {
// No optimizations are possible if listeners want groups. // No optimizations are possible if listeners want groups.
if (mListeners.notificationGroupsDesired()) { if (mListeners.notificationGroupsDesired()) {
return false; return false;
@@ -1992,6 +1993,13 @@ public class NotificationManagerService extends SystemService {
Slog.d(TAG, "Ignoring group child " + sbn.getKey() + " due to existing summary " Slog.d(TAG, "Ignoring group child " + sbn.getKey() + " due to existing summary "
+ summary.getKey()); + summary.getKey());
} }
// Make sure we don't leave an old version of the notification around.
if (old != null) {
if (DBG) {
Slog.d(TAG, "Canceling old version of ignored group child " + sbn.getKey());
}
cancelNotificationLocked(old, false, REASON_GROUP_OPTIMIZATION);
}
return true; return true;
} else if (isSummary) { } else if (isSummary) {
// Summary -> cancel children // Summary -> cancel children