Don't update the bubble on ranking changes if it's already in the stack

The only reason we should update/add a bubble in response to a ranking
change is if that notification wasn't a bubble before and should be
now.

Also set the entry when retrieving from pending / overflow.

Bug: 152322244
Test: manual - 1) add some bubbles, add one that auto expanded
               2) collapse stack
               3) trigger some notification in shade (e.g. start a timer)
               => notice the stack does not auto expand in the background
Change-Id: I15877fabf07a402dade76904dc1481ab669776ff
This commit is contained in:
Mady Mellor
2020-03-24 15:54:50 -07:00
parent 6dc855e10b
commit e45ff86573
2 changed files with 5 additions and 2 deletions

View File

@@ -957,9 +957,10 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
String key = orderedKeys[i];
NotificationEntry entry = mNotificationEntryManager.getPendingOrActiveNotif(key);
rankingMap.getRanking(key, mTmpRanking);
if (mBubbleData.hasBubbleWithKey(key) && !mTmpRanking.canBubble()) {
boolean isActiveBubble = mBubbleData.hasBubbleWithKey(key);
if (isActiveBubble && !mTmpRanking.canBubble()) {
mBubbleData.notificationEntryRemoved(entry, BubbleController.DISMISS_BLOCKED);
} else if (entry != null && mTmpRanking.isBubble()) {
} else if (entry != null && mTmpRanking.isBubble() && !isActiveBubble) {
entry.setFlagBubble(true);
onEntryUpdated(entry);
}

View File

@@ -233,6 +233,7 @@ public class BubbleData {
Bubble b = mOverflowBubbles.get(i);
if (b.getKey().equals(entry.getKey())) {
moveOverflowBubbleToPending(b);
b.setEntry(entry);
return b;
}
}
@@ -240,6 +241,7 @@ public class BubbleData {
for (int i = 0; i < mPendingBubbles.size(); i++) {
Bubble b = mPendingBubbles.get(i);
if (b.getKey().equals(entry.getKey())) {
b.setEntry(entry);
return b;
}
}