Fixed a bug where the summary could become visible even if it was suppressed

Because the updating of the suppression was prohibited, some groups could loose
their suppression state when they were heads upped. This would lead to duplicate
notifications. We're now still allowing the state to be properly modified instead
but don't notify listeners anymore since that was only an internal update.

Change-Id: I6ae96ea8cfab00ef6bdb1ef047f8b77ea88e8206
Fixes: 30608517
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 1755cc6..2c8339a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
@@ -42,7 +42,7 @@
     private int mBarState = -1;
     private HashMap<String, StatusBarNotification> mIsolatedEntries = new HashMap<>();
     private HeadsUpManager mHeadsUpManager;
-    private boolean mUpdatingSuppressionBlocked;
+    private boolean mIsUpdatingUnchangedGroup;
 
     public void setOnGroupChangeListener(OnGroupChangeListener listener) {
         mListener = listener;
@@ -141,7 +141,7 @@
     }
 
     private void updateSuppression(NotificationGroup group) {
-        if (group == null || mUpdatingSuppressionBlocked) {
+        if (group == null) {
             return;
         }
         boolean prevSuppressed = group.suppressed;
@@ -154,7 +154,9 @@
             if (group.suppressed) {
                 handleSuppressedSummaryHeadsUpped(group.summary);
             }
-            mListener.onGroupsChanged();
+            if (!mIsUpdatingUnchangedGroup) {
+                mListener.onGroupsChanged();
+            }
         }
     }
 
@@ -188,12 +190,12 @@
         boolean groupKeysChanged = !oldKey.equals(newKey);
         boolean wasGroupChild = isGroupChild(oldNotification);
         boolean isGroupChild = isGroupChild(entry.notification);
-        mUpdatingSuppressionBlocked = !groupKeysChanged && wasGroupChild == isGroupChild;
+        mIsUpdatingUnchangedGroup = !groupKeysChanged && wasGroupChild == isGroupChild;
         if (mGroupMap.get(getGroupKey(oldNotification)) != null) {
             onEntryRemovedInternal(entry, oldNotification);
         }
         onEntryAdded(entry);
-        mUpdatingSuppressionBlocked = false;
+        mIsUpdatingUnchangedGroup = false;
         if (isIsolated(entry.notification)) {
             mIsolatedEntries.put(entry.key, entry.notification);
             if (groupKeysChanged) {