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

Commit ac9fcb70 authored by Issei Suzuki's avatar Issei Suzuki
Browse files

Make StatusBar focusable when there is an expanded bubble.

Bug: 123544535
Test: atest BubbleControllerTest
Change-Id: I92e5c68bc9fe2033458bfe4769f8c6d3244d6f53
parent 22a4bfe2
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -186,7 +186,12 @@ public class BubbleController {
     * Set a listener to be notified of bubble expand events.
     */
    public void setExpandListener(BubbleExpandListener listener) {
        mExpandListener = listener;
        mExpandListener = ((isExpanding, key) -> {
            if (listener != null) {
                listener.onBubbleExpandChanged(isExpanding, key);
            }
            mStatusBarWindowController.setBubbleExpanded(isExpanding);
        });
        if (mStackView != null) {
            mStackView.setExpandListener(mExpandListener);
        }
+18 −1
Original line number Diff line number Diff line
@@ -202,7 +202,8 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
    private void applyFocusableFlag(State state) {
        boolean panelFocusable = state.statusBarFocusable && state.panelExpanded;
        if (state.bouncerShowing && (state.keyguardOccluded || state.keyguardNeedsInput)
                || ENABLE_REMOTE_INPUT && state.remoteInputActive) {
                || ENABLE_REMOTE_INPUT && state.remoteInputActive
                || state.bubbleExpanded) {
            mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
            mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
        } else if (state.isKeyguardShowingAndNotOccluded() || panelFocusable) {
@@ -486,6 +487,21 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
        return mCurrentState.bubblesShowing;
    }

    /**
     * Sets if there is a bubble being expanded on the screen.
     */
    public void setBubbleExpanded(boolean bubbleExpanded) {
        mCurrentState.bubbleExpanded = bubbleExpanded;
        apply(mCurrentState);
    }

    /**
     * The bubble is shown in expanded state for the status bar.
     */
    public boolean getBubbleExpanded() {
        return mCurrentState.bubbleExpanded;
    }

    public void setStateListener(OtherwisedCollapsedListener listener) {
        mListener = listener;
    }
@@ -539,6 +555,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
        boolean wallpaperSupportsAmbientMode;
        boolean notTouchable;
        boolean bubblesShowing;
        boolean bubbleExpanded;

        /**
         * The {@link StatusBar} state from the status bar.
+3 −0
Original line number Diff line number Diff line
@@ -168,12 +168,14 @@ public class BubbleControllerTest extends SysuiTestCase {
        // We should have bubbles & their notifs should show in the shade
        assertTrue(mBubbleController.hasBubbles());
        assertTrue(mRow.getEntry().showInShadeWhenBubble());
        assertFalse(mStatusBarWindowController.getBubbleExpanded());

        // Expand the stack
        BubbleStackView stackView = mBubbleController.getStackView();
        stackView.expandStack();
        assertTrue(mBubbleController.isStackExpanded());
        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().key);
        assertTrue(mStatusBarWindowController.getBubbleExpanded());

        // Make sure it's no longer in the shade
        assertFalse(mRow.getEntry().showInShadeWhenBubble());
@@ -182,6 +184,7 @@ public class BubbleControllerTest extends SysuiTestCase {
        stackView.collapseStack();
        verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().key);
        assertFalse(mBubbleController.isStackExpanded());
        assertFalse(mStatusBarWindowController.getBubbleExpanded());
    }

    @Test