Collapse shade on ACTION_CANCEL (sometimes)

As of ag/11546928, the framework emits an ACTION_CANCEL when the
proximity sensor turns off the screen, not an ACTION_UP. Previously, we
always expanded the shade in response to an ACTION_CANCEL. However,
after this change, this caused Dialer users to end up with an expanded
shade after putting the phone to their face, making it easy to
face-dial their notifications. This CL changes the behavior to put the
shade back to where it was when the gesture started -- either expanded
or closed.

Fixes: 155362798
Test: manual
Change-Id: I2d11d9f03bfe1e905028a640e2eb871d32e37248
This commit is contained in:
Ned Burns
2020-07-07 13:17:45 -04:00
parent 4f5495ea9c
commit 7c6dd3d568

View File

@@ -371,12 +371,26 @@ public abstract class PanelViewController {
float vectorVel = (float) Math.hypot(
mVelocityTracker.getXVelocity(), mVelocityTracker.getYVelocity());
boolean expand = flingExpands(vel, vectorVel, x, y)
|| event.getActionMasked() == MotionEvent.ACTION_CANCEL || forceCancel;
final boolean onKeyguard =
mStatusBarStateController.getState() == StatusBarState.KEYGUARD;
final boolean expand;
if (event.getActionMasked() == MotionEvent.ACTION_CANCEL || forceCancel) {
// If we get a cancel, put the shade back to the state it was in when the gesture
// started
if (onKeyguard) {
expand = true;
} else {
expand = !mPanelClosedOnDown;
}
} else {
expand = flingExpands(vel, vectorVel, x, y);
}
mDozeLog.traceFling(expand, mTouchAboveFalsingThreshold,
mStatusBar.isFalsingThresholdNeeded(), mStatusBar.isWakeUpComingFromTouch());
// Log collapse gesture if on lock screen.
if (!expand && mStatusBarStateController.getState() == StatusBarState.KEYGUARD) {
if (!expand && onKeyguard) {
float displayDensity = mStatusBar.getDisplayDensity();
int heightDp = (int) Math.abs((y - mInitialTouchY) / displayDensity);
int velocityDp = (int) Math.abs(vel / displayDensity);