Merge "Notify display is empty even if it's not the expanded bubble" into qt-qpr1-dev

This commit is contained in:
Mady Mellor
2019-09-19 23:10:44 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 8 deletions

View File

@@ -560,7 +560,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
// Need to check for !appCancel here because the notification may have
// previously been dismissed & entry.isRowDismissed would still be true
boolean userRemovedNotif = (entry.isRowDismissed() && !isAppCancel)
boolean userRemovedNotif = (entry != null && entry.isRowDismissed() && !isAppCancel)
|| isClearAll || isUserDimiss || isSummaryCancel;
if (isSummaryOfBubbles) {
@@ -570,7 +570,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
// The bubble notification sticks around in the data as long as the bubble is
// not dismissed and the app hasn't cancelled the notification.
Bubble bubble = mBubbleData.getBubbleWithKey(key);
boolean bubbleExtended = entry.isBubble() && userRemovedNotif;
boolean bubbleExtended = entry != null && entry.isBubble() && userRemovedNotif;
if (bubbleExtended) {
bubble.setShowInShadeWhenBubble(false);
bubble.setShowBubbleDot(false);
@@ -579,7 +579,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
}
mNotificationEntryManager.updateNotifications();
return true;
} else if (!userRemovedNotif) {
} else if (!userRemovedNotif && entry != null) {
// This wasn't a user removal so we should remove the bubble as well
mBubbleData.notificationEntryRemoved(entry, DISMISS_NOTIF_CANCEL);
return false;
@@ -939,13 +939,11 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
final Bubble expandedBubble = mStackView != null
? mStackView.getExpandedBubble()
: null;
if (expandedBubble == null) {
return;
}
if (expandedBubble.getDisplayId() == displayId) {
int expandedId = expandedBubble != null ? expandedBubble.getDisplayId() : -1;
if (mStackView != null && mStackView.isExpanded() && expandedId == displayId) {
mBubbleData.setExpanded(false);
expandedBubble.getExpandedView().notifyDisplayEmpty();
}
mBubbleData.notifyDisplayEmpty(displayId);
}
}

View File

@@ -392,6 +392,22 @@ public class BubbleData {
dispatchPendingChanges();
}
/**
* Indicates that the provided display is no longer in use and should be cleaned up.
*
* @param displayId the id of the display to clean up.
*/
void notifyDisplayEmpty(int displayId) {
for (Bubble b : mBubbles) {
if (b.getDisplayId() == displayId) {
if (b.getExpandedView() != null) {
b.getExpandedView().notifyDisplayEmpty();
}
return;
}
}
}
private void dispatchPendingChanges() {
if (mListener != null && mStateChange.anythingChanged()) {
mListener.applyUpdate(mStateChange);