am ad9bcb22: merge from open-source master

Merge commit 'ad9bcb22d05fbf130ac64254abd51a137e9a3d3f'

* commit 'ad9bcb22d05fbf130ac64254abd51a137e9a3d3f':
  Fix x coordinate of the ACTION_UP event in TouchUtils.drag() method
  Fixed Android animation framework, for using interpolators that do not start at 0.0f
  Fix for GPS engines without separate session and engine status events.
  Be tolerant of GPS session and engine on status messages arriving out of order.
  GpsLocationProvider: Do not release wakelock until the GPS engine is fully off
diff --git a/core/java/android/view/animation/Animation.java b/core/java/android/view/animation/Animation.java
index c8396c4..000e4ce 100644
--- a/core/java/android/view/animation/Animation.java
+++ b/core/java/android/view/animation/Animation.java
@@ -880,7 +880,7 @@
         region.inset(-1.0f, -1.0f);
         if (mFillBefore) {
             final Transformation previousTransformation = mPreviousTransformation;
-            applyTransformation(0.0f, previousTransformation);
+            applyTransformation(mInterpolator.getInterpolation(0.0f), previousTransformation);
         }
     }
 
diff --git a/core/java/android/view/animation/AnimationSet.java b/core/java/android/view/animation/AnimationSet.java
index 98b2594..1546dcd 100644
--- a/core/java/android/view/animation/AnimationSet.java
+++ b/core/java/android/view/animation/AnimationSet.java
@@ -282,7 +282,9 @@
                 final Animation a = animations.get(i);
 
                 temp.clear();
-                a.applyTransformation(0.0f, temp);
+                final Interpolator interpolator = a.mInterpolator;
+                a.applyTransformation(interpolator != null ? interpolator.getInterpolation(0.0f)
+                        : 0.0f, temp);
                 previousTransformation.compose(temp);
             }
         }
diff --git a/test-runner/android/test/TouchUtils.java b/test-runner/android/test/TouchUtils.java
index 962b2f9..69c6d2d 100644
--- a/test-runner/android/test/TouchUtils.java
+++ b/test-runner/android/test/TouchUtils.java
@@ -773,7 +773,7 @@
         float xStep = (toX - fromX) / stepCount;
 
         MotionEvent event = MotionEvent.obtain(downTime, eventTime,
-                MotionEvent.ACTION_DOWN, fromX, y, 0);
+                MotionEvent.ACTION_DOWN, x, y, 0);
         inst.sendPointerSync(event);
         inst.waitForIdleSync();
 
@@ -787,7 +787,7 @@
         }
 
         eventTime = SystemClock.uptimeMillis();
-        event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, fromX, y, 0);
+        event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0);
         inst.sendPointerSync(event);
         inst.waitForIdleSync();
     }