Add more pointer validation check to ViewDragHelper.

Adding isPointerDown checks before modifying mInitialMotionX
and mLastMotionX arrays.

clearMotionHistory gets called on ACTION_POINTER_UP so there is
nothing to clear if we never got ACTION_POINTER_DOWN.

Merging to master manually as it has merge conflict due to support
library refactoring.

Bug: 29561625
Change-Id: I39c28dc58e0e96602d160c7168f5d555c147d27c
diff --git a/core-ui/java/android/support/v4/widget/ViewDragHelper.java b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
index 39972f0..48262fd 100644
--- a/core-ui/java/android/support/v4/widget/ViewDragHelper.java
+++ b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
@@ -791,7 +791,7 @@
     }
 
     private void clearMotionHistory(int pointerId) {
-        if (mInitialMotionX == null) {
+        if (mInitialMotionX == null || !isPointerDown(pointerId)) {
             return;
         }
         mInitialMotionX[pointerId] = 0;
@@ -846,6 +846,10 @@
         final int pointerCount = ev.getPointerCount();
         for (int i = 0; i < pointerCount; i++) {
             final int pointerId = ev.getPointerId(i);
+            // If pointer is invalid then skip saving on ACTION_MOVE.
+            if (!isValidPointerForActionMove(pointerId)) {
+              continue;
+            }
             final float x = ev.getX(i);
             final float y = ev.getY(i);
             mLastMotionX[pointerId] = x;