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

Commit a0a20dc2 authored by arthurhung's avatar arthurhung
Browse files

Exception if receive move withouth down

Throw an IllegalStateException if recevie touch move without down,
that could give an explicit feedback about GestureDetector may not
receive the full touch stream.

Bug: 149578486
Test: manual
Change-Id: I644ec1bebbca66dd0f0c219b63a6478b1290d1e1
parent 5749a307
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -288,6 +288,11 @@ public class GestureDetector {
     */
    private VelocityTracker mVelocityTracker;

    /**
     * True if the detector can throw exception when touch steam is unexpected .
     */
    private boolean mExceptionForTouchStream;

    /**
     * Consistency verifier for debugging purposes.
     */
@@ -467,6 +472,8 @@ public class GestureDetector {
        mTouchSlopSquare = touchSlop * touchSlop;
        mDoubleTapTouchSlopSquare = doubleTapTouchSlop * doubleTapTouchSlop;
        mDoubleTapSlopSquare = doubleTapSlop * doubleTapSlop;
        mExceptionForTouchStream = context != null
                && context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R;
    }

    /**
@@ -639,6 +646,13 @@ public class GestureDetector {
                break;

            case MotionEvent.ACTION_MOVE:
                if (mExceptionForTouchStream && !mStillDown) {
                    throw new IllegalStateException("Incomplete event stream received: "
                            + "Received ACTION_MOVE before ACTION_DOWN. ACTION_DOWN must precede "
                            + "ACTION_MOVE following ACTION_UP or ACTION_CANCEL, or when this "
                            + "GestureDetector has not yet received any events.");
                }

                if (mInLongPress || mInContextClick) {
                    break;
                }