Use correct stack height when bypass enabled.

Also removes the 'getPulseStackHeight' method which didn't solve any of the issues it was added to solve, and only introduced an issue when expanding a pulse on bypass device.

Fixes: 194513502
Test: on bypass device, expand QS; validate that notifications do not disappear at the bottom.
Test: on bypass device, receive pulse; unlock via bypass; validate that pulse seamlessly transitions to hun.
Test: on bypass device, expand shade from lock screen; validate that notifications all fade in at once, rather than appearing in sequence.
Test: on bypass device, receive pulse; drag to expand it; validate that other notifications appear in sequence, rather than popping in all at once. (Note, this is non-ideal behavior which has always existed, not a regression.  ideally other notifications would fade in.)
Test: on non-bypass device, receive pulse; biometric unlock; validate that notifications smoothly animate to open shade.
Change-Id: I8d0968f5a8632bba6b1db5940b933ee53b2abb8a
This commit is contained in:
Jeff DeCew
2021-07-26 16:48:23 -04:00
parent 755ca98ad4
commit 44a098036a
2 changed files with 10 additions and 22 deletions

View File

@@ -154,15 +154,6 @@ public class AmbientState {
return mStackHeight;
}
/**
* @return Height of notifications panel, with the animation from pulseHeight accounted for.
*/
// TODO(b/192348384): move this logic to getStackHeight, and remove this and getInnerHeight
public float getPulseStackHeight() {
float pulseHeight = Math.min(mPulseHeight, mStackHeight);
return MathUtils.lerp(mStackHeight, pulseHeight, mDozeAmount);
}
/** Tracks the state from AlertingNotificationManager#hasNotifications() */
private boolean mHasAlertEntries;

View File

@@ -441,19 +441,16 @@ public class StackScrollAlgorithm {
// to shelf start, thereby hiding all notifications (except the first one, which
// we later unhide in updatePulsingState)
// TODO(b/192348384): merge InnerHeight with StackHeight
final int stackBottom;
if (ambientState.isBypassEnabled()) {
// We want to use the stackHeight when pulse expanding, since the animation
// isn't currently optimized if the pulseHeight is continuously changing
// Let's improve this when we're merging the heights above
stackBottom = ambientState.isPulseExpanding()
? (int) ambientState.getStackHeight()
: ambientState.getInnerHeight();
} else {
stackBottom = !ambientState.isShadeExpanded() || ambientState.isDozing()
? ambientState.getInnerHeight()
: (int) ambientState.getPulseStackHeight();
}
// Note: Bypass pulse looks different, but when it is not expanding, we need
// to use the innerHeight which doesn't update continuously, otherwise we show
// more notifications than we should during this special transitional states.
boolean bypassPulseNotExpanding = ambientState.isBypassEnabled()
&& ambientState.isOnKeyguard() && !ambientState.isPulseExpanding();
final int stackBottom =
!ambientState.isShadeExpanded() || ambientState.isDozing()
|| bypassPulseNotExpanding
? ambientState.getInnerHeight()
: (int) ambientState.getStackHeight();
final int shelfStart =
stackBottom - ambientState.getShelf().getIntrinsicHeight();
viewState.yTranslation = Math.min(viewState.yTranslation, shelfStart);