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

Commit ea9f2692 authored by Xiaowen Lei's avatar Xiaowen Lei
Browse files

Animate top padding of notifications on status view height change.

Note that `requestScrollerTopPaddingUpdate(true);` doesn't work because
the topPadding doesn't update until later, through the
`ShadeLayoutChangeListener.onLayoutChange`.

Fix: 293564374
Test: on Keyguard turn on/off flashlight via shortcut
Test: onKeyguardStatusViewHeightChange_animatesNextTopPaddingChangeForNSSL()
Change-Id: Id3cee8616df497f0957c25cd1ba56a4dbfbfbc0e
parent 5fbbe448
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1241,6 +1241,13 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
            mKeyguardStatusViewController.init();
        }
        mKeyguardStatusViewController.setSplitShadeEnabled(mSplitShadeEnabled);
        mKeyguardStatusViewController.getView().addOnLayoutChangeListener(
                (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
                    int oldHeight = oldBottom - oldTop;
                    if (v.getHeight() != oldHeight) {
                        mNotificationStackScrollLayoutController.animateNextTopPaddingChange();
                    }
                });

        updateClockAppearance();

+17 −0
Original line number Diff line number Diff line
@@ -538,6 +538,23 @@ public class NotificationPanelViewControllerTest extends NotificationPanelViewCo
        assertKeyguardStatusViewCentered();
    }

    @Test
    public void onKeyguardStatusViewHeightChange_animatesNextTopPaddingChangeForNSSL() {
        ArgumentCaptor<View.OnLayoutChangeListener> captor =
                ArgumentCaptor.forClass(View.OnLayoutChangeListener.class);
        verify(mKeyguardStatusView).addOnLayoutChangeListener(captor.capture());
        View.OnLayoutChangeListener listener = captor.getValue();

        clearInvocations(mNotificationStackScrollLayoutController);

        when(mKeyguardStatusView.getHeight()).thenReturn(0);
        listener.onLayoutChange(mKeyguardStatusView, /* left= */ 0, /* top= */ 0, /* right= */
                0, /* bottom= */ 0, /* oldLeft= */ 0, /* oldTop= */ 0, /* oldRight= */
                0, /* oldBottom = */ 200);

        verify(mNotificationStackScrollLayoutController).animateNextTopPaddingChange();
    }

    @Test
    public void testCanCollapsePanelOnTouch_trueForKeyGuard() {
        mStatusBarStateController.setState(KEYGUARD);