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

Commit 674a19a2 authored by Lyn Han's avatar Lyn Han Committed by Android (Google) Code Review
Browse files

Merge "Fix overlap between notifications and lock icon in portrait shade" into udc-dev

parents 67c8f87d 1dd9d0b9
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -1653,10 +1653,9 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
                Math.max(mIndicationBottomPadding, mAmbientIndicationBottomPadding));
        mKeyguardNotificationBottomPadding = bottomPadding;

        float staticTopPadding = mClockPositionAlgorithm.getLockscreenMinStackScrollerPadding()
                // getMinStackScrollerPadding is from the top of the screen,
                // but we need it from the top of the NSSL.
                - mNotificationStackScrollLayoutController.getTop();
        float staticTopPadding = mClockPositionAlgorithm.getLockscreenNotifPadding(
                mNotificationStackScrollLayoutController.getTop());

        mKeyguardNotificationTopPadding = staticTopPadding;

        // To debug the available space, enable debug lines in this class. If you change how the
@@ -1670,8 +1669,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
            Log.i(TAG, "\n");
            Log.i(TAG, "staticTopPadding[" + staticTopPadding
                    + "] = Clock.padding["
                    + mClockPositionAlgorithm.getLockscreenMinStackScrollerPadding()
                    + "] - NSSLC.top[" + mNotificationStackScrollLayoutController.getTop()
                    + mClockPositionAlgorithm.getLockscreenNotifPadding(
                            mNotificationStackScrollLayoutController.getTop())
                    + "]"
            );
            Log.i(TAG, "bottomPadding[" + bottomPadding
+9 −3
Original line number Diff line number Diff line
@@ -229,12 +229,18 @@ public class KeyguardClockPositionAlgorithm {
        }
    }

    public float getLockscreenMinStackScrollerPadding() {
    /**
     * @param nsslTop NotificationStackScrollLayout top, which is below top of the srceen.
     * @return Distance from nsslTop to top of the first view in the lockscreen shade.
     */
    public float getLockscreenNotifPadding(float nsslTop) {
        if (mBypassEnabled) {
            return mUnlockedStackScrollerPadding;
            return mUnlockedStackScrollerPadding - nsslTop;
        } else if (mIsSplitShade) {
            return mSplitShadeTargetTopMargin + mUserSwitchHeight;
            return mSplitShadeTargetTopMargin + mUserSwitchHeight - nsslTop;
        } else {
            // Non-bypass portrait shade already uses values from nsslTop
            // so we don't need to subtract it here.
            return mMinTopMargin + mKeyguardStatusHeight;
        }
    }
+44 −5
Original line number Diff line number Diff line
@@ -67,6 +67,8 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
    private float mQsExpansion;
    private int mCutoutTopInset = 0;
    private boolean mIsSplitShade = false;
    private boolean mBypassEnabled = false;
    private int mUnlockedStackScrollerPadding = 0;
    private float mUdfpsTop = -1;
    private float mClockBottom = SCREEN_HEIGHT / 2;
    private boolean mClockTopAligned;
@@ -339,15 +341,52 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
    }

    @Test
    public void notifMinPaddingAlignedWithClockInSplitShadeMode() {
    public void notifPadding_splitShade() {
        givenLockScreen();
        mIsSplitShade = true;
        mKeyguardStatusHeight = 200;
        // WHEN the position algorithm is run
        positionClock();
        // THEN the padding DOESN'T adjust for keyguard status height.
        assertThat(mClockPositionAlgorithm.getLockscreenMinStackScrollerPadding())
                .isEqualTo(mKeyguardStatusBarHeaderHeight);
        assertThat(mClockPositionAlgorithm.getLockscreenNotifPadding(/* nsslTop= */ 10))
                .isEqualTo(mKeyguardStatusBarHeaderHeight - 10);
    }

    @Test
    public void notifPadding_portraitShade_bypassOff() {
        givenLockScreen();
        mIsSplitShade = false;
        mBypassEnabled = false;

        // mMinTopMargin = 100 = 80 + max(20, 0)
        mKeyguardStatusBarHeaderHeight = 80;
        mUserSwitchHeight = 20;
        when(mResources.getDimensionPixelSize(R.dimen.keyguard_clock_top_margin))
                .thenReturn(0);

        mKeyguardStatusHeight = 200;

        // WHEN the position algorithm is run
        positionClock();

        // THEN padding = 300 = mMinTopMargin(100) + mKeyguardStatusHeight(200)
        assertThat(mClockPositionAlgorithm.getLockscreenNotifPadding(/* nsslTop= */ 50))
                .isEqualTo(300);
    }

    @Test
    public void notifPadding_portraitShade_bypassOn() {
        givenLockScreen();
        mIsSplitShade = false;
        mBypassEnabled = true;
        mUnlockedStackScrollerPadding = 200;

        // WHEN the position algorithm is run
        positionClock();

        // THEN padding = 150 = mUnlockedStackScrollerPadding(200) - nsslTop(50)
        assertThat(mClockPositionAlgorithm.getLockscreenNotifPadding(/* nsslTop= */ 50))
                .isEqualTo(150);
    }

    @Test
@@ -589,8 +628,8 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
                0 /* userSwitchPreferredY */,
                mDark,
                ZERO_DRAG,
                false /* bypassEnabled */,
                0 /* unlockedStackScrollerPadding */,
                mBypassEnabled,
                mUnlockedStackScrollerPadding,
                mQsExpansion,
                mCutoutTopInset,
                mIsSplitShade,