Merge "Fixing empty split shade after rotation from expanded QS on lockscreen" into tm-qpr-dev

This commit is contained in:
Michał Brzeziński
2022-06-11 03:56:52 +00:00
committed by Android (Google) Code Review
3 changed files with 38 additions and 12 deletions

View File

@@ -22,18 +22,21 @@ package com.android.systemui.statusbar;
public class StatusBarState { public class StatusBarState {
/** /**
* The status bar is in the "normal" shade mode. * The status bar is in the "normal", unlocked mode or the device is still locked but we're
* accessing camera from power button double-tap shortcut.
*/ */
public static final int SHADE = 0; public static final int SHADE = 0;
/** /**
* Status bar is currently the Keyguard. * Status bar is currently the Keyguard. In single column mode, when you swipe from the top of
* the keyguard to expand QS immediately, it's still KEYGUARD state.
*/ */
public static final int KEYGUARD = 1; public static final int KEYGUARD = 1;
/** /**
* Status bar is in the special mode, where it is fully interactive but still locked. So * Status bar is in the special mode, where it was transitioned from lockscreen to shade.
* dismissing the shade will still show the bouncer. * Depending on user's security settings, dismissing the shade will either show the
* bouncer or go directly to unlocked {@link #SHADE} mode.
*/ */
public static final int SHADE_LOCKED = 2; public static final int SHADE_LOCKED = 2;

View File

@@ -1163,16 +1163,29 @@ public class NotificationPanelViewController extends PanelViewController {
mKeyguardMediaController.refreshMediaPosition(); mKeyguardMediaController.refreshMediaPosition();
if (splitShadeChanged) { if (splitShadeChanged) {
// when we switch from split shade to regular shade we want to enforce setting qs to onSplitShadeEnabledChanged();
}
}
private void onSplitShadeEnabledChanged() {
// when we switch between split shade and regular shade we want to enforce setting qs to
// the default state: expanded for split shade and collapsed otherwise // the default state: expanded for split shade and collapsed otherwise
if (!isOnKeyguard() && mPanelExpanded) { if (!isOnKeyguard() && mPanelExpanded) {
setQsExpanded(mSplitShadeEnabled); setQsExpanded(mSplitShadeEnabled);
} }
if (isOnKeyguard() && mQsExpanded && mSplitShadeEnabled) {
// In single column keyguard - when you swipe from the top - QS is fully expanded and
// StatusBarState is KEYGUARD. That state doesn't make sense for split shade,
// where notifications are always visible and we effectively go to fully expanded
// shade, that is SHADE_LOCKED.
// Also we might just be switching from regular expanded shade, so we don't want
// to force state transition if it's already correct.
mStatusBarStateController.setState(StatusBarState.SHADE_LOCKED, /* force= */false);
}
updateClockAppearance(); updateClockAppearance();
updateQsState(); updateQsState();
mNotificationStackScrollLayoutController.updateFooter(); mNotificationStackScrollLayoutController.updateFooter();
} }
}
private View reInflateStub(int viewId, int stubId, int layoutId, boolean enabled) { private View reInflateStub(int viewId, int stubId, int layoutId, boolean enabled) {
View view = mView.findViewById(viewId); View view = mView.findViewById(viewId);

View File

@@ -1005,6 +1005,16 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
verify(mTapAgainViewController).show(); verify(mTapAgainViewController).show();
} }
@Test
public void testRotatingToSplitShadeWithQsExpanded_transitionsToShadeLocked() {
mStatusBarStateController.setState(KEYGUARD);
mNotificationPanelViewController.setQsExpanded(true);
enableSplitShade(true);
assertThat(mStatusBarStateController.getState()).isEqualTo(SHADE_LOCKED);
}
@Test @Test
public void testSwitchesToCorrectClockInSinglePaneShade() { public void testSwitchesToCorrectClockInSinglePaneShade() {
mStatusBarStateController.setState(KEYGUARD); mStatusBarStateController.setState(KEYGUARD);