Merge "Fix an issue that caused an NPE" into sc-v2-dev am: f1e8bc69c0

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16011419

Change-Id: I5c61ea1aad18787ad5ce39604d322b41a634ae0a
This commit is contained in:
Mady Mellor
2021-10-08 06:21:58 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 3 deletions

View File

@@ -558,6 +558,8 @@ public class BubbleData {
} }
Bubble bubbleToRemove = mBubbles.get(indexToRemove); Bubble bubbleToRemove = mBubbles.get(indexToRemove);
bubbleToRemove.stopInflation(); bubbleToRemove.stopInflation();
overflowBubble(reason, bubbleToRemove);
if (mBubbles.size() == 1) { if (mBubbles.size() == 1) {
if (hasOverflowBubbles() && (mPositioner.showingInTaskbar() || isExpanded())) { if (hasOverflowBubbles() && (mPositioner.showingInTaskbar() || isExpanded())) {
// No more active bubbles but we have stuff in the overflow -- select that view // No more active bubbles but we have stuff in the overflow -- select that view
@@ -581,8 +583,6 @@ public class BubbleData {
mStateChange.orderChanged |= repackAll(); mStateChange.orderChanged |= repackAll();
} }
overflowBubble(reason, bubbleToRemove);
// Note: If mBubbles.isEmpty(), then mSelectedBubble is now null. // Note: If mBubbles.isEmpty(), then mSelectedBubble is now null.
if (Objects.equals(mSelectedBubble, bubbleToRemove)) { if (Objects.equals(mSelectedBubble, bubbleToRemove)) {
// Move selection to the new bubble at the same position. // Move selection to the new bubble at the same position.

View File

@@ -793,7 +793,7 @@ public class BubbleDataTest extends ShellTestCase {
} }
@Test @Test
public void test_expanded_removeLastBubble_collapsesStack() { public void test_expanded_removeLastBubble_showsOverflowIfNotEmpty() {
// Setup // Setup
sendUpdatedEntryAtTime(mEntryA1, 1000); sendUpdatedEntryAtTime(mEntryA1, 1000);
changeExpandedStateAtTime(true, 2000); changeExpandedStateAtTime(true, 2000);
@@ -802,6 +802,21 @@ public class BubbleDataTest extends ShellTestCase {
// Test // Test
mBubbleData.dismissBubbleWithKey(mEntryA1.getKey(), Bubbles.DISMISS_USER_GESTURE); mBubbleData.dismissBubbleWithKey(mEntryA1.getKey(), Bubbles.DISMISS_USER_GESTURE);
verifyUpdateReceived(); 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); assertExpandedChangedTo(false);
} }