Ensuring QS can't collapse (hide) in split shade

QS would be asked to collapse - so effectively made invisible - in split shade when:
- shade is expanded by some 3rd party launchers
- `adb shell cmd statusbar expand-notifications` is called when shade is already visible
- `adb shell cmd statusbar expand-notifications` is called quickly twice when shade is not visible

Now `expandShadeToNotifications` - formerly known as `expandWithoutQs` - will make sure that split shade doesn't react at all to that command when shade is already expanded.

Fixes: 263903057
Test: writing unit test is very hard so I'm adding functional test OpenSplitShadeWithAccessibilityCommandTwice
Change-Id: I983157bbd0bf7cbe262036cd565d157aec6842ce
This commit is contained in:
Michal Brzezinski
2023-01-16 15:23:09 +00:00
parent d2787bc598
commit 73b8866cb7
4 changed files with 16 additions and 6 deletions

View File

@@ -2072,7 +2072,17 @@ public final class NotificationPanelViewController implements Dumpable {
}
}
public void expandWithoutQs() {
/**
* Expand shade so that notifications are visible.
* Non-split shade: just expanding shade or collapsing QS when they're expanded.
* Split shade: only expanding shade, notifications are always visible
*
* Called when `adb shell cmd statusbar expand-notifications` is executed.
*/
public void expandShadeToNotifications() {
if (mSplitShadeEnabled && (isShadeFullyOpen() || isExpanding())) {
return;
}
if (isQsExpanded()) {
flingSettings(0 /* velocity */, FLING_COLLAPSE);
} else {
@@ -5500,7 +5510,7 @@ public final class NotificationPanelViewController implements Dumpable {
@Override
public void flingTopOverscroll(float velocity, boolean open) {
// in split shade mode we want to expand/collapse QS only when touch happens within QS
// in split shade touches affect QS only when touch happens within QS
if (isSplitShadeAndTouchXOutsideQs(mInitialTouchX)) {
return;
}

View File

@@ -215,7 +215,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
return;
}
mNotificationPanelViewController.expandWithoutQs();
mNotificationPanelViewController.expandShadeToNotifications();
}
@Override

View File

@@ -1111,7 +1111,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
if (hideImmediately) {
mStatusBarStateController.setLeaveOpenOnKeyguardHide(false);
} else {
mNotificationPanelViewController.expandWithoutQs();
mNotificationPanelViewController.expandShadeToNotifications();
}
}
return;

View File

@@ -140,7 +140,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
// Trying to open it does nothing.
mSbcqCallbacks.animateExpandNotificationsPanel();
verify(mNotificationPanelViewController, never()).expandWithoutQs();
verify(mNotificationPanelViewController, never()).expandShadeToNotifications();
mSbcqCallbacks.animateExpandSettingsPanel(null);
verify(mNotificationPanelViewController, never()).expand(anyBoolean());
}
@@ -158,7 +158,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
// Can now be opened.
mSbcqCallbacks.animateExpandNotificationsPanel();
verify(mNotificationPanelViewController).expandWithoutQs();
verify(mNotificationPanelViewController).expandShadeToNotifications();
mSbcqCallbacks.animateExpandSettingsPanel(null);
verify(mNotificationPanelViewController).expandWithQs();
}