Merge "Make InputEvent.getEventTime() public."
diff --git a/api/current.txt b/api/current.txt
index 1de70fd..b4a1eae 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -22718,6 +22718,7 @@
     method public int describeContents();
     method public final android.view.InputDevice getDevice();
     method public abstract int getDeviceId();
+    method public abstract long getEventTime();
     method public abstract int getSource();
     field public static final android.os.Parcelable.Creator CREATOR;
   }
diff --git a/core/java/android/view/InputEvent.java b/core/java/android/view/InputEvent.java
index 5602436..ef810a3 100755
--- a/core/java/android/view/InputEvent.java
+++ b/core/java/android/view/InputEvent.java
@@ -159,8 +159,26 @@
     public abstract void setTainted(boolean tainted);
 
     /**
-     * Returns the time (in ns) when this specific event was generated.
+     * Retrieve the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base.
+     *
+     * @return Returns the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base.
+     */
+    public abstract long getEventTime();
+
+    /**
+     * Retrieve the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond (instead of millisecond) precision.
+     * <p>
      * The value is in nanosecond precision but it may not have nanosecond accuracy.
+     * </p>
+     *
+     * @return Returns the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond (instead of millisecond) precision.
+     *
      * @hide
      */
     public abstract long getEventTimeNano();
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index e4a4a75..ace7aa8 100755
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -2375,17 +2375,31 @@
     }
 
     /**
-     * Retrieve the time this event occurred, 
+     * Retrieve the time this event occurred,
      * in the {@link android.os.SystemClock#uptimeMillis} time base.
-     * 
+     *
      * @return Returns the time this event occurred, 
      * in the {@link android.os.SystemClock#uptimeMillis} time base.
      */
+    @Override
     public final long getEventTime() {
         return mEventTime;
     }
 
-    /** @hide */
+    /**
+     * Retrieve the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond (instead of millisecond) precision.
+     * <p>
+     * The value is in nanosecond precision but it may not have nanosecond accuracy.
+     * </p>
+     *
+     * @return Returns the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond (instead of millisecond) precision.
+     *
+     * @hide
+     */
     @Override
     public final long getEventTimeNano() {
         return mEventTime * 1000000L;
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index e51ba3d..78fa2d7 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1781,18 +1781,32 @@
     }
 
     /**
-     * Returns the time (in ms) when this specific event was generated.
+     * Retrieve the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base.
+     *
+     * @return Returns the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base.
      */
+    @Override
     public final long getEventTime() {
         return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT) / NS_PER_MS;
     }
 
     /**
-     * Returns the time (in ns) when this specific event was generated.
+     * Retrieve the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond precision.
+     * <p>
      * The value is in nanosecond precision but it may not have nanosecond accuracy.
+     * </p>
+     *
+     * @return Returns the time this event occurred,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond precision.
      *
      * @hide
      */
+    @Override
     public final long getEventTimeNano() {
         return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT);
     }
@@ -2234,10 +2248,16 @@
 
     /**
      * Returns the time that a historical movement occurred between this event
-     * and the previous event.  Only applies to ACTION_MOVE events.
+     * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base.
+     * <p>
+     * This only applies to ACTION_MOVE events.
+     * </p>
      *
      * @param pos Which historical value to return; must be less than
      * {@link #getHistorySize}
+     * @return Returns the time that a historical movement occurred between this
+     * event and the previous event,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base.
      *
      * @see #getHistorySize
      * @see #getEventTime
@@ -2247,6 +2267,32 @@
     }
 
     /**
+     * Returns the time that a historical movement occurred between this event
+     * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base
+     * but with nanosecond (instead of millisecond) precision.
+     * <p>
+     * This only applies to ACTION_MOVE events.
+     * </p><p>
+     * The value is in nanosecond precision but it may not have nanosecond accuracy.
+     * </p>
+     *
+     * @param pos Which historical value to return; must be less than
+     * {@link #getHistorySize}
+     * @return Returns the time that a historical movement occurred between this
+     * event and the previous event,
+     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
+     * nanosecond (instead of millisecond) precision.
+     *
+     * @see #getHistorySize
+     * @see #getEventTime
+     *
+     * @hide
+     */
+    public final long getHistoricalEventTimeNano(int pos) {
+        return nativeGetEventTimeNanos(mNativePtr, pos);
+    }
+
+    /**
      * {@link #getHistoricalX(int, int)} for the first pointer index (may be an
      * arbitrary pointer identifier).
      *