Merge "Make StatusBar focusable when there is an expanded bubble."
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user