Fix an issue that caused an NPE
If the overflow is empty when the last bubble
is dismissed we collapse the stack. If it's not empty
we show the overflow contents.
We were overflowing bubbles AFTER making the choice
to select the overflow or collapse the stack which
causes problems.
Test: atest BubbleDataTest
Test: manual - have 1 bubble and an empty overflow
- navigate to the overflow, dismiss the bubble
=> no crash
Bug: 202320538
Change-Id: Ic838c5c61bcd714d8de94672d3c4ed753d4f6fa6
This commit is contained in:
@@ -558,6 +558,8 @@ public class BubbleData {
|
||||
}
|
||||
Bubble bubbleToRemove = mBubbles.get(indexToRemove);
|
||||
bubbleToRemove.stopInflation();
|
||||
overflowBubble(reason, bubbleToRemove);
|
||||
|
||||
if (mBubbles.size() == 1) {
|
||||
if (hasOverflowBubbles() && (mPositioner.showingInTaskbar() || isExpanded())) {
|
||||
// No more active bubbles but we have stuff in the overflow -- select that view
|
||||
@@ -581,8 +583,6 @@ public class BubbleData {
|
||||
mStateChange.orderChanged |= repackAll();
|
||||
}
|
||||
|
||||
overflowBubble(reason, bubbleToRemove);
|
||||
|
||||
// Note: If mBubbles.isEmpty(), then mSelectedBubble is now null.
|
||||
if (Objects.equals(mSelectedBubble, bubbleToRemove)) {
|
||||
// Move selection to the new bubble at the same position.
|
||||
|
||||
@@ -793,7 +793,7 @@ public class BubbleDataTest extends ShellTestCase {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_expanded_removeLastBubble_collapsesStack() {
|
||||
public void test_expanded_removeLastBubble_showsOverflowIfNotEmpty() {
|
||||
// Setup
|
||||
sendUpdatedEntryAtTime(mEntryA1, 1000);
|
||||
changeExpandedStateAtTime(true, 2000);
|
||||
@@ -802,6 +802,21 @@ public class BubbleDataTest extends ShellTestCase {
|
||||
// Test
|
||||
mBubbleData.dismissBubbleWithKey(mEntryA1.getKey(), Bubbles.DISMISS_USER_GESTURE);
|
||||
verifyUpdateReceived();
|
||||
assertThat(mBubbleData.getOverflowBubbles().size()).isGreaterThan(0);
|
||||
assertSelectionChangedTo(mBubbleData.getOverflow());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_expanded_removeLastBubble_collapsesIfOverflowEmpty() {
|
||||
// Setup
|
||||
sendUpdatedEntryAtTime(mEntryA1, 1000);
|
||||
changeExpandedStateAtTime(true, 2000);
|
||||
mBubbleData.setListener(mListener);
|
||||
|
||||
// Test
|
||||
mBubbleData.dismissBubbleWithKey(mEntryA1.getKey(), Bubbles.DISMISS_NO_BUBBLE_UP);
|
||||
verifyUpdateReceived();
|
||||
assertThat(mBubbleData.getOverflowBubbles()).isEmpty();
|
||||
assertExpandedChangedTo(false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user