Fixed an issue where the phone would be stuck pulseExpanding

During long drags, in combination with face unlock / bypass
the phone could get stuck pulseExpanding, especially when
the screen was turned off. We now give the pulse expandhelper
the touch if it is currently handling the pulse to gracefully
reset.

Test: expand with a long pulse with bypass, turn off screen, observe not stuck
Fixes: 192239213
Change-Id: Ifcb6ce48f9d406843599cc7f8e7edc27f3ad0cd0
This commit is contained in:
Selim Cinek
2021-06-28 20:07:33 +02:00
parent 0b6748480b
commit dea4663fae
2 changed files with 11 additions and 3 deletions

View File

@@ -179,7 +179,10 @@ constructor(
}
override fun onTouchEvent(event: MotionEvent): Boolean {
if (!canHandleMotionEvent()) {
val finishExpanding = (event.action == MotionEvent.ACTION_CANCEL ||
event.action == MotionEvent.ACTION_UP) && isExpanding
if (!canHandleMotionEvent() && !finishExpanding) {
// We allow cancellations/finishing to still go through here to clean up the state
return false
}

View File

@@ -3821,8 +3821,13 @@ public class NotificationPanelViewController extends PanelViewController {
expand(true /* animate */);
}
initDownStates(event);
if (!mIsExpanding && !shouldQuickSettingsIntercept(mDownX, mDownY, 0)
&& mPulseExpansionHandler.onTouchEvent(event)) {
// If pulse is expanding already, let's give it the touch. There are situations
// where the panel starts expanding even though we're also pulsing
boolean pulseShouldGetTouch = (!mIsExpanding
&& !shouldQuickSettingsIntercept(mDownX, mDownY, 0))
|| mPulseExpansionHandler.isExpanding();
if (pulseShouldGetTouch && mPulseExpansionHandler.onTouchEvent(event)) {
// We're expanding all the other ones shouldn't get this anymore
return true;
}