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

Commit 7b7b8420 authored by Michal Brzezinski's avatar Michal Brzezinski
Browse files

Fixing setting mQsExpandImmediate state in correct context in split shade

Currently mQsExpandImmediate was set too often - always when panel was tracking touch and sometimes in times when we don't want it e.g. swiping up and/or in locked shade.
Now this code is moved into more scoped callback, when it's called only when shade is actually expanding and only in unlocked state.

Fixes: 230340979
Test: manual + unit tests
Change-Id: I47870107b339b9cde0c61478c68f2f118ff97d62
parent 1cc6eceb
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -3169,12 +3169,6 @@ public class NotificationPanelViewController extends PanelViewController {
        mFalsingCollector.onTrackingStarted(!mKeyguardStateController.canDismissLockScreen());
        super.onTrackingStarted();
        mScrimController.onTrackingStarted();
        // normally we want to set mQsExpandImmediate for every split shade case (at least when
        // expanding), but keyguard tracking logic is different - this callback is called when
        // unlocking with swipe up but not when swiping down to reveal shade
        if (mShouldUseSplitNotificationShade && !mKeyguardShowing) {
            mQsExpandImmediate = true;
        }
        if (mQsFullyExpanded) {
            mQsExpandImmediate = true;
            setShowShelfOnly(true);
@@ -4921,6 +4915,12 @@ public class NotificationPanelViewController extends PanelViewController {
            mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
        }
        if (state == STATE_OPENING) {
            // we need to ignore it on keyguard as this is a false alarm - transition from unlocked
            // to locked will trigger this event and we're not actually in the process of opening
            // the shade, lockscreen is just always expanded
            if (mShouldUseSplitNotificationShade && !isOnKeyguard()) {
                mQsExpandImmediate = true;
            }
            mCentralSurfaces.makeExpandedVisible(false);
        }
        if (state == STATE_CLOSED) {
+26 −3
Original line number Diff line number Diff line
@@ -352,6 +352,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
    private FalsingManagerFake mFalsingManager = new FalsingManagerFake();
    private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
    private Handler mMainHandler;
    private final PanelExpansionStateManager mPanelExpansionStateManager =
            new PanelExpansionStateManager();

    @Before
    public void setup() {
@@ -516,7 +518,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
                mLargeScreenShadeHeaderController,
                mScreenOffAnimationController,
                mLockscreenGestureLogger,
                new PanelExpansionStateManager(),
                mPanelExpansionStateManager,
                mNotificationRemoteInputManager,
                mSysUIUnfoldComponent,
                mControlsComponent,
@@ -987,14 +989,35 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
    }

    @Test
    public void testQsToBeImmediatelyExpandedInSplitShade() {
    public void testQsToBeImmediatelyExpandedWhenOpeningPanelInSplitShade() {
        enableSplitShade(/* enabled= */ true);
        // set panel state to CLOSED
        mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 0,
                /* expanded= */ false, /* tracking= */ false, /* dragDownPxAmount= */ 0);
        assertThat(mNotificationPanelViewController.mQsExpandImmediate).isFalse();

        mNotificationPanelViewController.onTrackingStarted();
        // change panel state to OPENING
        mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 0.5f,
                /* expanded= */ true, /* tracking= */ true, /* dragDownPxAmount= */ 100);

        assertThat(mNotificationPanelViewController.mQsExpandImmediate).isTrue();
    }

    @Test
    public void testQsNotToBeImmediatelyExpandedWhenGoingFromUnlockedToLocked() {
        enableSplitShade(/* enabled= */ true);
        // set panel state to CLOSED
        mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 0,
                /* expanded= */ false, /* tracking= */ false, /* dragDownPxAmount= */ 0);

        // go to lockscreen, which also sets fraction to 1.0f and makes shade "expanded"
        mStatusBarStateController.setState(KEYGUARD);
        mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
                /* expanded= */ true, /* tracking= */ true, /* dragDownPxAmount= */ 0);

        assertThat(mNotificationPanelViewController.mQsExpandImmediate).isFalse();
    }

    @Test
    public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() {
        mNotificationPanelViewController.mQs = mQs;