diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java | 2 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java | 26 |
2 files changed, 11 insertions, 17 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java index 6570221bc26a..05a9fc762595 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java @@ -34,7 +34,6 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.Map; import java.util.Objects; /** @@ -343,7 +342,6 @@ public class NotificationData { entry.notification.setOverrideGroupKey(overrideGroupKey); mGroupManager.onEntryUpdated(entry, oldSbn); } - //mGroupManager.onEntryBundlingUpdated(entry, getOverrideGroupKey(entry.key)); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java index 204ab7e3aa80..1755cc68bee2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java @@ -31,7 +31,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; -import java.util.Objects; /** * A class to handle notifications and their corresponding groups. @@ -43,6 +42,7 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged private int mBarState = -1; private HashMap<String, StatusBarNotification> mIsolatedEntries = new HashMap<>(); private HeadsUpManager mHeadsUpManager; + private boolean mUpdatingSuppressionBlocked; public void setOnGroupChangeListener(OnGroupChangeListener listener) { mListener = listener; @@ -140,17 +140,8 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged } } - public void onEntryBundlingUpdated(final NotificationData.Entry updated, - final String overrideGroupKey) { - final StatusBarNotification oldSbn = updated.notification.clone(); - if (!Objects.equals(oldSbn.getOverrideGroupKey(), overrideGroupKey)) { - updated.notification.setOverrideGroupKey(overrideGroupKey); - onEntryUpdated(updated, oldSbn); - } - } - private void updateSuppression(NotificationGroup group) { - if (group == null) { + if (group == null || mUpdatingSuppressionBlocked) { return; } boolean prevSuppressed = group.suppressed; @@ -192,19 +183,24 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged public void onEntryUpdated(NotificationData.Entry entry, StatusBarNotification oldNotification) { + String oldKey = oldNotification.getGroupKey(); + String newKey = entry.notification.getGroupKey(); + boolean groupKeysChanged = !oldKey.equals(newKey); + boolean wasGroupChild = isGroupChild(oldNotification); + boolean isGroupChild = isGroupChild(entry.notification); + mUpdatingSuppressionBlocked = !groupKeysChanged && wasGroupChild == isGroupChild; if (mGroupMap.get(getGroupKey(oldNotification)) != null) { onEntryRemovedInternal(entry, oldNotification); } onEntryAdded(entry); + mUpdatingSuppressionBlocked = false; if (isIsolated(entry.notification)) { mIsolatedEntries.put(entry.key, entry.notification); - String oldKey = oldNotification.getGroupKey(); - String newKey = entry.notification.getGroupKey(); - if (!oldKey.equals(newKey)) { + if (groupKeysChanged) { updateSuppression(mGroupMap.get(oldKey)); updateSuppression(mGroupMap.get(newKey)); } - } else if (!isGroupChild(oldNotification) && isGroupChild(entry.notification)) { + } else if (!wasGroupChild && isGroupChild) { onEntryBecomingChild(entry); } } |