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

Commit 1734ac70 authored by Lyn Han's avatar Lyn Han Committed by Automerger Merge Worker
Browse files

Merge "Fix overlap between notifications and lock icon in portrait shade" into...

Merge "Fix overlap between notifications and lock icon in portrait shade" into udc-dev am: 674a19a2 am: 00288a06

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23589950



Change-Id: Ida51a5bcc0a847e7cc15e4cc53b432b695d38775
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ea085d35 00288a06
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -1659,10 +1659,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
@@ -1676,8 +1675,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,