Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71df45b8 authored by Mady Mellor's avatar Mady Mellor Committed by Automerger Merge Worker
Browse files

Merge "Fix an issue where the bubble overflow wouldn't animate when...

Merge "Fix an issue where the bubble overflow wouldn't animate when collapsing" into sc-v2-dev am: 9c06ec64

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

Change-Id: I13ea029a2dab9bf00d559166792514791c782a1b
parents 5fc92b57 9c06ec64
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -699,10 +699,9 @@ public class BubbleData {
        if (DEBUG_BUBBLE_DATA) {
            Log.d(TAG, "setSelectedBubbleInternal: " + bubble);
        }
        if (!mShowingOverflow && Objects.equals(bubble, mSelectedBubble)) {
        if (Objects.equals(bubble, mSelectedBubble)) {
            return;
        }
        // Otherwise, if we are showing the overflow menu, return to the previously selected bubble.
        boolean isOverflow = bubble != null && BubbleOverflow.KEY.equals(bubble.getKey());
        if (bubble != null
                && !mBubbles.contains(bubble)
@@ -771,6 +770,10 @@ public class BubbleData {
                Log.e(TAG, "Attempt to expand stack without selected bubble!");
                return;
            }
            if (mSelectedBubble.getKey().equals(mOverflow.getKey()) && !mBubbles.isEmpty()) {
                // Show previously selected bubble instead of overflow menu when expanding.
                setSelectedBubbleInternal(mBubbles.get(0));
            }
            if (mSelectedBubble instanceof Bubble) {
                ((Bubble) mSelectedBubble).markAsAccessedAt(mTimeSource.currentTimeMillis());
            }
@@ -779,16 +782,6 @@ public class BubbleData {
            // Apply ordering and grouping rules from expanded -> collapsed, then save
            // the result.
            mStateChange.orderChanged |= repackAll();
            // Save the state which should be returned to when expanded (with no other changes)

            if (mShowingOverflow) {
                // Show previously selected bubble instead of overflow menu on next expansion.
                if (!mSelectedBubble.getKey().equals(mOverflow.getKey())) {
                    setSelectedBubbleInternal(mSelectedBubble);
                } else {
                    setSelectedBubbleInternal(mBubbles.get(0));
                }
            }
            if (mBubbles.indexOf(mSelectedBubble) > 0) {
                // Move the selected bubble to the top while collapsed.
                int index = mBubbles.indexOf(mSelectedBubble);
+30 −2
Original line number Diff line number Diff line
@@ -869,6 +869,35 @@ public class BubbleDataTest extends ShellTestCase {
        assertNotNull(mBubbleData.getOverflowBubbleWithKey(mBubbleA2.getKey()));
    }

    /**
     * Verifies that after the stack is collapsed with the overflow selected, it will select
     * the top bubble upon next expansion.
     */
    @Test
    public void test_collapseWithOverflowSelected_nextExpansion() {
        sendUpdatedEntryAtTime(mEntryA1, 1000);
        sendUpdatedEntryAtTime(mEntryA2, 2000);
        mBubbleData.setExpanded(true);

        mBubbleData.setListener(mListener);

        // Select the overflow
        mBubbleData.setShowingOverflow(true);
        mBubbleData.setSelectedBubble(mBubbleData.getOverflow());
        verifyUpdateReceived();
        assertSelectionChangedTo(mBubbleData.getOverflow());

        // Collapse
        mBubbleData.setExpanded(false);
        verifyUpdateReceived();
        assertSelectionNotChanged();

        // Expand (here we should select the new bubble)
        mBubbleData.setExpanded(true);
        verifyUpdateReceived();
        assertSelectionChangedTo(mBubbleA2);
    }

    private void verifyUpdateReceived() {
        verify(mListener).applyUpdate(mUpdateCaptor.capture());
        reset(mListener);
@@ -902,7 +931,7 @@ public class BubbleDataTest extends ShellTestCase {
        assertWithMessage("selectionChanged").that(update.selectionChanged).isFalse();
    }

    private void assertSelectionChangedTo(Bubble bubble) {
    private void assertSelectionChangedTo(BubbleViewProvider bubble) {
        BubbleData.Update update = mUpdateCaptor.getValue();
        assertWithMessage("selectionChanged").that(update.selectionChanged).isTrue();
        assertWithMessage("selectedBubble").that(update.selectedBubble).isEqualTo(bubble);
@@ -925,7 +954,6 @@ public class BubbleDataTest extends ShellTestCase {
        assertThat(update.overflowBubbles).isEqualTo(bubbles);
    }


    private BubbleEntry createBubbleEntry(int userId, String notifKey, String packageName,
            NotificationListenerService.Ranking ranking) {
        return createBubbleEntry(userId, notifKey, packageName, ranking, 1000);