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

This commit is contained in:
Lyn Han
2023-06-12 18:16:05 +00:00
committed by Android (Google) Code Review
3 changed files with 58 additions and 14 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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,