Loading packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +5 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java +9 −3 Original line number Diff line number Diff line Loading @@ -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; } } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java +44 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -589,8 +628,8 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { 0 /* userSwitchPreferredY */, mDark, ZERO_DRAG, false /* bypassEnabled */, 0 /* unlockedStackScrollerPadding */, mBypassEnabled, mUnlockedStackScrollerPadding, mQsExpansion, mCutoutTopInset, mIsSplitShade, Loading Loading
packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +5 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java +9 −3 Original line number Diff line number Diff line Loading @@ -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; } } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java +44 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -589,8 +628,8 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { 0 /* userSwitchPreferredY */, mDark, ZERO_DRAG, false /* bypassEnabled */, 0 /* unlockedStackScrollerPadding */, mBypassEnabled, mUnlockedStackScrollerPadding, mQsExpansion, mCutoutTopInset, mIsSplitShade, Loading