Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14f069b8 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

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
parent 65225acf
Loading
Loading
Loading
Loading
+13 −8
Original line number Original line Diff line number Diff line
@@ -121,14 +121,14 @@ constructor(
    }
    }


    override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
    override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
        return maybeStartExpansion(event)
        return canHandleMotionEvent() && startExpansion(event)
    }
    }


    private fun maybeStartExpansion(event: MotionEvent): Boolean {
    private fun canHandleMotionEvent(): Boolean {
        if (!wakeUpCoordinator.canShowPulsingHuns || qsExpanded ||
        return !wakeUpCoordinator.canShowPulsingHuns || qsExpanded || bouncerShowing
                bouncerShowing) {
            return false
    }
    }

    private fun startExpansion(event: MotionEvent): Boolean {
        if (velocityTracker == null) {
        if (velocityTracker == null) {
            velocityTracker = VelocityTracker.obtain()
            velocityTracker = VelocityTracker.obtain()
        }
        }
@@ -177,9 +177,14 @@ constructor(
    }
    }


    override fun onTouchEvent(event: MotionEvent): Boolean {
    override fun onTouchEvent(event: MotionEvent): Boolean {
        if (!isExpanding) {
        if (!canHandleMotionEvent()) {
            return maybeStartExpansion(event)
            return false
        }
        }

        if (!isExpanding || event.actionMasked == MotionEvent.ACTION_DOWN) {
            return startExpansion(event)
        }

        velocityTracker!!.addMovement(event)
        velocityTracker!!.addMovement(event)
        val y = event.y
        val y = event.y