From 14f069b83ced6680a154753e9d944983e60f78a8 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Fri, 1 May 2020 17:29:46 -0400 Subject: 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. Bug: 153823196 Test: manual Change-Id: I956cc8dbbc0fd88a5794c26ed06c18c499fc5475 --- .../systemui/statusbar/PulseExpansionHandler.kt | 21 +++++++++++++-------- 1 file changed, 13 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 88f148b00cdc..02c98ae2867d 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,9 +177,14 @@ 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 -- cgit v1.2.3-59-g8ed1b