Merge "Fix frozen notifications after bouncer dismissal" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-03-06 19:22:31 +00:00
committed by Android (Google) Code Review
5 changed files with 46 additions and 25 deletions

View File

@@ -102,6 +102,16 @@ public class AmbientState {
/** Whether we are swiping up. */
private boolean mIsSwipingUp;
/** Whether we are flinging the shade open or closed. */
private boolean mIsFlinging;
/**
* Whether we need to do a fling down after swiping up on lockscreen.
* True right after we swipe up on lockscreen and have not finished the fling down that follows.
* False when we stop flinging or leave lockscreen.
*/
private boolean mNeedFlingAfterLockscreenSwipeUp = false;
/**
* @return Height of the notifications panel without top padding when expansion completes.
*/
@@ -142,6 +152,10 @@ public class AmbientState {
* @param isSwipingUp Whether we are swiping up.
*/
public void setSwipingUp(boolean isSwipingUp) {
if (!isSwipingUp && mIsSwipingUp) {
// Just stopped swiping up.
mNeedFlingAfterLockscreenSwipeUp = true;
}
mIsSwipingUp = isSwipingUp;
}
@@ -152,6 +166,17 @@ public class AmbientState {
return mIsSwipingUp;
}
/**
* @param isFlinging Whether we are flinging the shade open or closed.
*/
public void setIsFlinging(boolean isFlinging) {
if (isOnKeyguard() && !isFlinging && mIsFlinging) {
// Just stopped flinging.
mNeedFlingAfterLockscreenSwipeUp = false;
}
mIsFlinging = isFlinging;
}
/**
* @return Fraction of shade expansion.
*/
@@ -459,6 +484,9 @@ public class AmbientState {
}
public void setStatusBarState(int statusBarState) {
if (mStatusBarState != StatusBarState.KEYGUARD) {
mNeedFlingAfterLockscreenSwipeUp = false;
}
mStatusBarState = statusBarState;
}
@@ -521,6 +549,13 @@ public class AmbientState {
return mUnlockHintRunning;
}
/**
* @return Whether we need to do a fling down after swiping up on lockscreen.
*/
public boolean isFlingingAfterSwipeUpOnLockscreen() {
return mIsFlinging && mNeedFlingAfterLockscreenSwipeUp;
}
/**
* @return whether a view is dozing and not pulsing right now
*/

View File

@@ -202,9 +202,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
private float mQsExpansionFraction;
private final int mSplitShadeMinContentHeight;
/** Whether we are flinging the shade open or closed. */
private boolean mIsFlinging;
/**
* The algorithm which calculates the properties for our children
*/
@@ -1263,13 +1260,16 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
/**
* @return Whether we should skip stack height update for lockscreen swipe-up or unlock hint.
* @return Whether we should skip stack height updates.
* True when
* 1) Unlock hint is running
* 2) Swiping up on lockscreen or flinging down after swipe up
*/
private boolean shouldSkipHeightUpdate() {
// After the user swipes up on lockscreen and lets go,
// {@link PanelViewController) flings the shade back down.
return mAmbientState.isOnKeyguard() && (
mAmbientState.isUnlockHintRunning() || mAmbientState.isSwipingUp() || mIsFlinging);
return mAmbientState.isOnKeyguard()
&& (mAmbientState.isUnlockHintRunning()
|| mAmbientState.isSwipingUp()
|| mAmbientState.isFlingingAfterSwipeUpOnLockscreen());
}
/**
@@ -5009,13 +5009,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
mAmbientState.setUnlockHintRunning(running);
}
/**
* @param isFlinging Whether we are flinging the shade open or closed.
*/
public void setIsFlinging(boolean isFlinging) {
mIsFlinging = isFlinging;
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
public void setHeadsUpGoingAwayAnimationsAllowed(boolean headsUpGoingAwayAnimationsAllowed) {
mHeadsUpGoingAwayAnimationsAllowed = headsUpGoingAwayAnimationsAllowed;

View File

@@ -1181,13 +1181,6 @@ public class NotificationStackScrollLayoutController {
mView.setUnlockHintRunning(running);
}
/**
* @param isFlinging Whether we are flinging the shade open or close.
*/
public void setIsFlinging(boolean isFlinging) {
mView.setIsFlinging(isFlinging);
}
public boolean isFooterViewNotGone() {
return mView.isFooterViewNotGone();
}

View File

@@ -1758,14 +1758,14 @@ public class NotificationPanelViewController extends PanelViewController {
mHeadsUpTouchHelper.notifyFling(!expand);
mKeyguardStateController.notifyPanelFlingStart(!expand /* flingingToDismiss */);
setClosingWithAlphaFadeout(!expand && !isOnKeyguard() && getFadeoutAlpha() == 1.0f);
mNotificationStackScrollLayoutController.setIsFlinging(true);
mAmbientState.setIsFlinging(true);
super.flingToHeight(vel, expand, target, collapseSpeedUpFactor, expandBecauseOfFalsing);
}
@Override
protected void onFlingEnd(boolean cancelled) {
super.onFlingEnd(cancelled);
mNotificationStackScrollLayoutController.setIsFlinging(false);
mAmbientState.setIsFlinging(false);
}
private boolean onQsIntercept(MotionEvent event) {

View File

@@ -397,6 +397,7 @@ public abstract class PanelViewController {
private void endMotionEvent(MotionEvent event, float x, float y, boolean forceCancel) {
mTrackingPointer = -1;
mAmbientState.setSwipingUp(false);
if ((mTracking && mTouchSlopExceeded) || Math.abs(x - mInitialTouchX) > mTouchSlop
|| Math.abs(y - mInitialTouchY) > mTouchSlop
|| event.getActionMasked() == MotionEvent.ACTION_CANCEL || forceCancel) {
@@ -460,7 +461,6 @@ public abstract class PanelViewController {
boolean expands = onEmptySpaceClick(mInitialTouchX);
onTrackingStopped(expands);
}
mAmbientState.setSwipingUp(false);
mVelocityTracker.clear();
}