Merge "Fix overlap between notifications and lock icon in portrait shade" into udc-dev
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user