From da849daa55d1deea35b7193bc23d5a32578fc9a8 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Wed, 4 Jan 2023 18:21:05 +0000 Subject: [PATCH] Fix falsing on notification dismissal. We were incorrectly analyzing shade swipes during notification dismissal. When an owner swipes side-to-side, we shouldn't try to classify it as a shade_drag, which is intended for vertical drags. I also found an bad switch-case fall-through in TypeClassifier related to the BRIGHTNESS_SLIDER that is fixed. Test: manually swiped on notifications. Bug: 236197248 Change-Id: Ib040530775a42cb21326f4a74e693565707c1b6f --- .../src/com/android/systemui/classifier/TypeClassifier.java | 2 ++ .../stack/NotificationStackScrollLayoutController.java | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java index f576a5af8907b..d8d2c98d7641b 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java @@ -69,6 +69,8 @@ public class TypeClassifier extends FalsingClassifier { // A more sophisticated thing to do here would be to look at the size of the // vertical change relative to the screen size. _Some_ amount of vertical // change should be expected. + wrongDirection = vertical; + break; case NOTIFICATION_DISMISS: wrongDirection = vertical; break; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index c2c38a7b355bb..58919489496d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -1902,8 +1902,10 @@ public class NotificationStackScrollLayoutController { } if (ev.getActionMasked() == MotionEvent.ACTION_UP) { // Ensure the falsing manager records the touch. we don't do anything with it - // at the moment. - mFalsingManager.isFalseTouch(Classifier.SHADE_DRAG); + // at the moment, but it may trigger a global falsing event. + if (!horizontalSwipeWantsIt) { + mFalsingManager.isFalseTouch(Classifier.SHADE_DRAG); + } mView.setCheckForLeaveBehind(true); } traceJankOnTouchEvent(ev.getActionMasked(), scrollerWantsIt);