summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java26
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);
}
}