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

Commit b72b72ac authored by Ats Jenk's avatar Ats Jenk
Browse files

Fix bug with clearing bubble to expand

When BubbleController receives multiple status bar state updates, it can
clear the bubble to be expanded information.
This can happen when user receives a bubble notification on lockscreen
and taps on it. In this case we set the bubble to be expanded field on
the controller as the device is locked and we can't expand the bubble
yet.
Phone unlock flow triggers multiple statusbar updates to the
BubbleController which can clear the bubble to be expanded field.
Make sure field is only cleared when bubble actually is going to be
expanded.

Bug: 240226362
Test: atest BubblesTest
Test: have bubbles stacked, pattern lock screen, lock device and receive
an incoming notification to one of the bubbles, click on the
notification to unlock device. Observe bubbles is expanded after
unlocking device.

Change-Id: I61f1d6a1fb673a89fa9b7a1d6b6253874d0c5778
parent bfe6b276
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -538,7 +538,6 @@ public class BubbleController implements ConfigurationChangeListener {

        if (mNotifEntryToExpandOnShadeUnlock != null) {
            expandStackAndSelectBubble(mNotifEntryToExpandOnShadeUnlock);
            mNotifEntryToExpandOnShadeUnlock = null;
        }

        updateStack();
+27 −0
Original line number Diff line number Diff line
@@ -1370,6 +1370,33 @@ public class BubblesTest extends SysuiTestCase {
        assertThat(stackView.getVisibility()).isEqualTo(View.VISIBLE);
    }

    /**
     * Test to verify behavior for following situation:
     * <ul>
     *     <li>status bar shade state is set to <code>false</code></li>
     *     <li>there is a bubble pending to be expanded</li>
     * </ul>
     * Test that duplicate status bar state updates to <code>false</code> do not clear the
     * pending bubble to be
     * expanded.
     */
    @Test
    public void testOnStatusBarStateChanged_statusBarChangeDoesNotClearExpandingBubble() {
        mBubbleController.updateBubble(mBubbleEntry);
        mBubbleController.onStatusBarStateChanged(false);
        // Set the bubble to expand once status bar state changes
        mBubbleController.expandStackAndSelectBubble(mBubbleEntry);
        // Check that stack is currently collapsed
        assertStackCollapsed();
        // Post status bar state change update with the same value
        mBubbleController.onStatusBarStateChanged(false);
        // Stack should remain collapsedb
        assertStackCollapsed();
        // Post status bar state change which should trigger bubble to expand
        mBubbleController.onStatusBarStateChanged(true);
        assertStackExpanded();
    }

    @Test
    public void testSetShouldAutoExpand_notifiesFlagChanged() {
        mBubbleController.updateBubble(mBubbleEntry);