Fix stack height jump during lockscreen=>shade and aod<=>ls
Fixes: 229882633
Test: NotificationPanelViewControllerTest
Test: press power button to wakeup and sleep
swipedown from lockscreen to go to shade
=> observe no stack height jump
Change-Id: I6575f733b17d6c8905150c0a7854d752dd0a5cfe
This commit is contained in:
@@ -1233,6 +1233,11 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
mKeyguardBottomArea.initQRCodeScanner(mQRCodeScannerController);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setMaxDisplayedNotifications(int maxAllowed) {
|
||||
mMaxAllowedKeyguardNotifications = maxAllowed;
|
||||
}
|
||||
|
||||
private void updateMaxDisplayedNotifications(boolean recompute) {
|
||||
if (recompute) {
|
||||
mMaxAllowedKeyguardNotifications = Math.max(computeMaxKeyguardNotifications(), 1);
|
||||
@@ -1463,7 +1468,11 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
/**
|
||||
* @return the maximum keyguard notifications that can fit on the screen
|
||||
*/
|
||||
private int computeMaxKeyguardNotifications() {
|
||||
@VisibleForTesting
|
||||
int computeMaxKeyguardNotifications() {
|
||||
if (mAmbientState.getFractionToShade() > 0 || mAmbientState.getDozeAmount() > 0) {
|
||||
return mMaxAllowedKeyguardNotifications;
|
||||
}
|
||||
float topPadding = mNotificationStackScrollLayoutController.getTopPadding();
|
||||
float shelfIntrinsicHeight =
|
||||
mNotificationShelfController.getVisibility() == View.GONE
|
||||
|
||||
@@ -557,6 +557,37 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
mMainHandler.removeCallbacksAndMessages(null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void computeMaxKeyguardNotifications_lockscreenToShade_returnsExistingMax() {
|
||||
when(mAmbientState.getFractionToShade()).thenReturn(0.5f);
|
||||
mNotificationPanelViewController.setMaxDisplayedNotifications(-1);
|
||||
|
||||
// computeMaxKeyguardNotifications sets maxAllowed to 0 at minimum if it updates the value
|
||||
assertThat(mNotificationPanelViewController.computeMaxKeyguardNotifications())
|
||||
.isEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void computeMaxKeyguardNotifications_dozeAmountNotZero_returnsExistingMax() {
|
||||
when(mAmbientState.getDozeAmount()).thenReturn(0.5f);
|
||||
mNotificationPanelViewController.setMaxDisplayedNotifications(-1);
|
||||
|
||||
// computeMaxKeyguardNotifications sets maxAllowed to 0 at minimum if it updates the value
|
||||
assertThat(mNotificationPanelViewController.computeMaxKeyguardNotifications())
|
||||
.isEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void computeMaxKeyguardNotifications_noTransition_updatesMax() {
|
||||
when(mAmbientState.getFractionToShade()).thenReturn(0f);
|
||||
when(mAmbientState.getDozeAmount()).thenReturn(0f);
|
||||
mNotificationPanelViewController.setMaxDisplayedNotifications(-1);
|
||||
|
||||
// computeMaxKeyguardNotifications sets maxAllowed to 0 at minimum if it updates the value
|
||||
assertThat(mNotificationPanelViewController.computeMaxKeyguardNotifications())
|
||||
.isNotEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetPanelScrimMinFraction() {
|
||||
mNotificationPanelViewController.setPanelScrimMinFraction(0.5f);
|
||||
|
||||
Reference in New Issue
Block a user