From 366cad1a3b4382c03134fa52b82c98311f088891 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Wed, 20 May 2020 15:55:48 -0400 Subject: [PATCH] Prevent NPE in PulseExpansionHandler This prevents an NPE in PulseExpansionHandler when the onTouchEvent method is called at unexpected times. Prior to this change, the velocityTracker could be left in an uninitialized state Fixes: 153823196 Test: atest SystemUITests Change-Id: Iecff489c351a77d2a8a9821d331c48b52d842af3 --- .../statusbar/PulseExpansionHandler.kt | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt index 88f148b00cdcc..6d2cc6b08bc4e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt @@ -121,14 +121,14 @@ constructor( } override fun onInterceptTouchEvent(event: MotionEvent): Boolean { - return maybeStartExpansion(event) + return canHandleMotionEvent() && startExpansion(event) } - private fun maybeStartExpansion(event: MotionEvent): Boolean { - if (!wakeUpCoordinator.canShowPulsingHuns || qsExpanded || - bouncerShowing) { - return false - } + private fun canHandleMotionEvent(): Boolean { + return wakeUpCoordinator.canShowPulsingHuns && !qsExpanded && !bouncerShowing + } + + private fun startExpansion(event: MotionEvent): Boolean { if (velocityTracker == null) { velocityTracker = VelocityTracker.obtain() } @@ -177,8 +177,12 @@ constructor( } override fun onTouchEvent(event: MotionEvent): Boolean { - if (!isExpanding) { - return maybeStartExpansion(event) + if (!canHandleMotionEvent()) { + return false + } + + if (!isExpanding || event.actionMasked == MotionEvent.ACTION_DOWN) { + return startExpansion(event) } velocityTracker!!.addMovement(event) val y = event.y