Don't send lock icon touches to NotifShade

If the lock icon affordance enters the device,
we don't want the shade to expand after device
entry.

Test: manual
Fixes: 208364482
Change-Id: If2d5b5296f7820b099e4315f9586632993617955
This commit is contained in:
Beverly
2021-11-30 12:14:02 -05:00
committed by Beverly Tai
parent 8a05667f8c
commit 86fb6220fa
2 changed files with 30 additions and 13 deletions

View File

@@ -661,26 +661,38 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
* @return whether to intercept the touch event
*/
public boolean onTouchEvent(MotionEvent event, Runnable onGestureDetectedRunnable) {
if (mSensorTouchLocation.contains((int) event.getX(), (int) event.getY())
&& (mView.getVisibility() == View.VISIBLE
|| (mAodFp != null && mAodFp.getVisibility() == View.VISIBLE))) {
if (onInterceptTouchEvent(event)) {
mOnGestureDetectedRunnable = onGestureDetectedRunnable;
mGestureDetector.onTouchEvent(event);
}
// we continue to intercept all following touches until we see MotionEvent.ACTION_CANCEL UP
// or MotionEvent.ACTION_UP. this is to avoid passing the touch to NPV
// after the lock icon disappears on device entry
if (mDownDetected) {
if (event.getAction() == MotionEvent.ACTION_CANCEL
|| event.getAction() == MotionEvent.ACTION_UP) {
mDownDetected = false;
}
return true;
}
mDownDetected = false;
return false;
}
/**
* Intercepts the touch if the onDown event and current event are within this lock icon view's
* bounds.
*/
public boolean onInterceptTouchEvent(MotionEvent event) {
if (!inLockIconArea(event) || !isClickable()) {
return false;
}
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
return true;
}
return mDownDetected;
}
private boolean inLockIconArea(MotionEvent event) {
return mSensorTouchLocation.contains((int) event.getX(), (int) event.getY())
&& (mView.getVisibility() == View.VISIBLE
|| (mAodFp != null && mAodFp.getVisibility() == View.VISIBLE));
}
private boolean isClickable() {
return mUdfpsSupported || mShowUnlockIcon;
}

View File

@@ -338,6 +338,11 @@ public class NotificationShadeWindowViewController {
return true;
}
if (mLockIconViewController.onInterceptTouchEvent(ev)) {
// immediately return true; don't send the touch to the drag down helper
return true;
}
boolean intercept = false;
if (mNotificationPanelViewController.isFullyExpanded()
&& mDragDownHelper.isDragDownEnabled()