From 9b8362201e797125c95b7cd2f53231ebe20aa978 Mon Sep 17 00:00:00 2001 From: Michal Brzezinski Date: Tue, 3 May 2022 17:38:50 +0100 Subject: Fixing "adb shell cmd statusbar expand-settings" command in split shade The command was not working because it used `flingSettings` method in lockscreen and every motion in split shade in lockscreen is now managed by LockscreenShadeTransitionController. Circumventing LockscreenShadeTransitionController means some visibilities and alpha were out of sync and broken. Now we're using that class directly for split shade case and everything works smoothly. Fixes: 228796547 Test: manual + NotificationPanelViewControllerTest Change-Id: Icfadaf01cb95bd3590d6e2db0841fec26e64d5b8 --- .../statusbar/phone/NotificationPanelViewController.java | 10 +++++++++- .../statusbar/phone/NotificationPanelViewControllerTest.java | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 98a711d122fc..5014c83bf353 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -1666,7 +1666,15 @@ public class NotificationPanelViewController extends PanelViewController { mQsExpandImmediate = true; setShowShelfOnly(true); } - if (isFullyCollapsed()) { + if (mShouldUseSplitNotificationShade && isOnKeyguard()) { + // It's a special case as this method is likely to not be initiated by finger movement + // but rather called from adb shell or accessibility service. + // In the future method below could be used for non-split shade as well but currently + // motion in that case looks worse than using flingSettings. + // TODO: make below function transitioning smoothly also in portrait with empty target + mLockscreenShadeTransitionController.goToLockedShade( + /* expandedView= */null, /* needsQSAnimation= */false); + } else if (isFullyCollapsed()) { expand(true /* animate */); } else { traceQsJank(true /* startTracing */, false /* wasCancelled */); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java index 6997b3e4bd70..a5915c654aef 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java @@ -1004,6 +1004,17 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { verify(mLargeScreenShadeHeaderController).setActive(false); } + @Test + public void testExpandWithQsMethodIsUsingLockscreenTransitionController() { + enableSplitShade(/* enabled= */ true); + mStatusBarStateController.setState(KEYGUARD); + + mNotificationPanelViewController.expandWithQs(); + + verify(mLockscreenShadeTransitionController).goToLockedShade( + /* expandedView= */null, /* needsQSAnimation= */false); + } + @Test public void testUnlockAnimationDoesNotAffectScrim() { mNotificationPanelViewController.onUnlockHintStarted(); -- cgit v1.2.3-59-g8ed1b