diff --git a/WebCore/dom/Event.h b/WebCore/dom/Event.h
index 4624663..9b55bb8 100644
--- a/WebCore/dom/Event.h
+++ b/WebCore/dom/Event.h
@@ -153,6 +153,10 @@
         bool createdByDOM() const { return m_createdByDOM; }
         void setCreatedByDOM(bool createdByDOM) { m_createdByDOM = createdByDOM; }
 
+#if PLATFORM(ANDROID)
+        void setCreateTime(DOMTimeStamp time) { m_createTime = time; }
+#endif
+
     protected:
         Event();
         Event(const AtomicString& type, bool canBubble, bool cancelable);
diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp
index cb3bca6..bdcd6aa 100644
--- a/WebCore/page/EventHandler.cpp
+++ b/WebCore/page/EventHandler.cpp
@@ -2662,7 +2662,9 @@
                                                    m_firstTouchPagePos.x(), m_firstTouchPagePos.y(),
                                                    event.ctrlKey(), event.altKey(), event.shiftKey(),
                                                    event.metaKey());
-
+#if PLATFORM(ANDROID)
+        cancelEv->setCreateTime(static_cast<DOMTimeStamp>(event.eventTime()));
+#endif
         ExceptionCode ec = 0;
         m_touchEventTarget->dispatchEvent(cancelEv.get(), ec);
         defaultPrevented |= cancelEv->defaultPrevented();
@@ -2677,6 +2679,9 @@
                                                    m_firstTouchPagePos.x(), m_firstTouchPagePos.y(),
                                                    event.ctrlKey(), event.altKey(), event.shiftKey(),
                                                    event.metaKey());
+#if PLATFORM(ANDROID)
+        endEv->setCreateTime(static_cast<DOMTimeStamp>(event.eventTime()));
+#endif
         ExceptionCode ec = 0;
         m_touchEventTarget->dispatchEvent(endEv.get(), ec);
 #if PLATFORM(ANDROID)
@@ -2703,6 +2708,7 @@
                                                        m_firstTouchPagePos.x(), m_firstTouchPagePos.y(),
                                                        event.ctrlKey(), event.altKey(), event.shiftKey(),
                                                        event.metaKey());
+            longpressEv->setCreateTime(static_cast<DOMTimeStamp>(event.eventTime()));
 
             ExceptionCode ec = 0;
             m_touchEventTarget->dispatchEvent(longpressEv.get(), ec);
@@ -2716,6 +2722,7 @@
                                                        m_firstTouchPagePos.x(), m_firstTouchPagePos.y(),
                                                        event.ctrlKey(), event.altKey(), event.shiftKey(),
                                                        event.metaKey());
+            doubleTapEv->setCreateTime(static_cast<DOMTimeStamp>(event.eventTime()));
 
             ExceptionCode ec = 0;
             m_touchEventTarget->dispatchEvent(doubleTapEv.get(), ec);
@@ -2730,6 +2737,9 @@
                                                        m_firstTouchPagePos.x(), m_firstTouchPagePos.y(),
                                                        event.ctrlKey(), event.altKey(), event.shiftKey(),
                                                        event.metaKey());
+#if PLATFORM(ANDROID)
+            startEv->setCreateTime(static_cast<DOMTimeStamp>(event.eventTime()));
+#endif
             ExceptionCode ec = 0;
             m_touchEventTarget->dispatchEvent(startEv.get(), ec);
             defaultPrevented |= startEv->defaultPrevented();
@@ -2749,6 +2759,9 @@
                                                    m_firstTouchPagePos.x(), m_firstTouchPagePos.y(),
                                                    event.ctrlKey(), event.altKey(), event.shiftKey(),
                                                    event.metaKey());
+#if PLATFORM(ANDROID)
+        moveEv->setCreateTime(static_cast<DOMTimeStamp>(event.eventTime()));
+#endif
         ExceptionCode ec = 0;
         m_touchEventTarget->dispatchEvent(moveEv.get(), ec);
         defaultPrevented |= moveEv->defaultPrevented();
diff --git a/WebCore/platform/PlatformTouchEvent.h b/WebCore/platform/PlatformTouchEvent.h
index 1f071ce..854db3c 100644
--- a/WebCore/platform/PlatformTouchEvent.h
+++ b/WebCore/platform/PlatformTouchEvent.h
@@ -60,7 +60,8 @@
 #if PLATFORM(QT)
     PlatformTouchEvent(QTouchEvent*);
 #elif PLATFORM(ANDROID)
-    PlatformTouchEvent(const IntPoint& windowPos, TouchEventType, PlatformTouchPoint::State);
+    // TODO (benm): eventTime is new and needs to be upstream
+    PlatformTouchEvent(const IntPoint& windowPos, TouchEventType, PlatformTouchPoint::State, long eventTime);
 #endif
 
     TouchEventType type() const { return m_type; }
@@ -71,6 +72,8 @@
     bool shiftKey() const { return m_shiftKey; }
     bool metaKey() const { return m_metaKey; }
 
+    long eventTime() const { return m_eventTime; }
+
 private:
     TouchEventType m_type;
     Vector<PlatformTouchPoint> m_touchPoints;
@@ -78,6 +81,7 @@
     bool m_altKey;
     bool m_shiftKey;
     bool m_metaKey;
+    long m_eventTime;
 };
 
 }
diff --git a/WebCore/platform/android/PlatformTouchEventAndroid.cpp b/WebCore/platform/android/PlatformTouchEventAndroid.cpp
index 65d787d..d2fcebb 100644
--- a/WebCore/platform/android/PlatformTouchEventAndroid.cpp
+++ b/WebCore/platform/android/PlatformTouchEventAndroid.cpp
@@ -30,12 +30,14 @@
 
 namespace WebCore {
 
-PlatformTouchEvent::PlatformTouchEvent(const IntPoint& windowPos, TouchEventType type, PlatformTouchPoint::State state)
+// TODO (benm): eventTime is new and needs to be upstream
+PlatformTouchEvent::PlatformTouchEvent(const IntPoint& windowPos, TouchEventType type, PlatformTouchPoint::State state, long eventTime)
     : m_type(type)
     , m_ctrlKey(false)
     , m_altKey(false)
     , m_shiftKey(false)
     , m_metaKey(false)
+    , m_eventTime(eventTime)
 {
     m_touchPoints.append(PlatformTouchPoint(windowPos, state));
 }
diff --git a/WebCore/plugins/android/PluginViewAndroid.cpp b/WebCore/plugins/android/PluginViewAndroid.cpp
index 88e7f0b..0abbc13 100644
--- a/WebCore/plugins/android/PluginViewAndroid.cpp
+++ b/WebCore/plugins/android/PluginViewAndroid.cpp
@@ -185,7 +185,7 @@
         return;
 
     ANPEvent evt;
-    SkANP::InitEvent(&evt, kTouch_ANPEventType);
+    SkANP::InitEvent(&evt, kTouch_ANPEventType, event->timeStamp());
 
     bool ignoreRet = false;
     const AtomicString& type = event->type();
@@ -247,7 +247,7 @@
     ANPEvent    evt;
 
     if (isUp || isDown) {
-        SkANP::InitEvent(&evt, kMouse_ANPEventType);
+        SkANP::InitEvent(&evt, kMouse_ANPEventType, event->timeStamp());
         evt.data.mouse.action = isUp ? kUp_ANPMouseAction : kDown_ANPMouseAction;
 
         // Convert to coordinates that are relative to the plugin.
@@ -309,7 +309,7 @@
     bool ignoreEvent = false;
 
     ANPEvent evt;
-    SkANP::InitEvent(&evt, kKey_ANPEventType);
+    SkANP::InitEvent(&evt, kKey_ANPEventType, event->timeStamp());
 
     switch (pke->type()) {
         case PlatformKeyboardEvent::KeyDown:
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 2ba29b9..8d8ebb9 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -1929,7 +1929,7 @@
     }
 }
 
-int WebViewCore::handleTouchEvent(int action, int x, int y)
+int WebViewCore::handleTouchEvent(int action, int x, int y, long time)
 {
     int preventDefault = 0;
 
@@ -1984,7 +1984,7 @@
 
     m_lastTouchPoint = pt;
 
-    WebCore::PlatformTouchEvent te(pt, type, touchState);
+    WebCore::PlatformTouchEvent te(pt, type, touchState, time);
     preventDefault = m_mainFrame->eventHandler()->handleTouchEvent(te);
 #endif
 
@@ -2677,14 +2677,14 @@
     return ret;
 }
 
-static jint HandleTouchEvent(JNIEnv *env, jobject obj, jint action, jint x, jint y)
+static jint HandleTouchEvent(JNIEnv *env, jobject obj, jint action, jint x, jint y, jlong time)
 {
 #ifdef ANDROID_INSTRUMENT
     TimeCounterAuto counter(TimeCounter::WebViewCoreTimeCounter);
 #endif
     WebViewCore* viewImpl = GET_NATIVE_VIEW(env, obj);
     LOG_ASSERT(viewImpl, "viewImpl not set in %s", __FUNCTION__);
-    return viewImpl->handleTouchEvent(action, x, y);
+    return viewImpl->handleTouchEvent(action, x, y, time);
 }
 
 static void TouchUp(JNIEnv *env, jobject obj, jint touchGeneration,
@@ -3087,7 +3087,7 @@
         (void*) SaveDocumentState },
     { "nativeFindAddress", "(Ljava/lang/String;Z)Ljava/lang/String;",
         (void*) FindAddress },
-    { "nativeHandleTouchEvent", "(III)I",
+    { "nativeHandleTouchEvent", "(IIIJ)I",
             (void*) HandleTouchEvent },
     { "nativeTouchUp", "(IIIII)V",
         (void*) TouchUp },
diff --git a/WebKit/android/jni/WebViewCore.h b/WebKit/android/jni/WebViewCore.h
index 2252878..58cb7df 100644
--- a/WebKit/android/jni/WebViewCore.h
+++ b/WebKit/android/jni/WebViewCore.h
@@ -282,7 +282,7 @@
         /**
          * Handle touch event
          */
-        int handleTouchEvent(int action, int x, int y);
+        int handleTouchEvent(int action, int x, int y, long time);
 
         /**
          * Handle motionUp event from the UI thread (called touchUp in the
diff --git a/WebKit/android/plugins/SkANP.cpp b/WebKit/android/plugins/SkANP.cpp
index 9bbb09e..bb3fe45 100644
--- a/WebKit/android/plugins/SkANP.cpp
+++ b/WebKit/android/plugins/SkANP.cpp
@@ -26,6 +26,7 @@
 // must include config.h first for webkit to fiddle with new/delete
 #include "config.h"
 #include "SkANP.h"
+#include <wtf/CurrentTime.h>
 
 SkRect* SkANP::SetRect(SkRect* dst, const ANPRectF& src) {
     dst->set(SkFloatToScalar(src.left),
@@ -102,4 +103,11 @@
 void SkANP::InitEvent(ANPEvent* event, ANPEventType et) {
     event->inSize = sizeof(ANPEvent);
     event->eventType = et;
+    event->timeStamp = currentTime() * 1000.0;
+}
+
+void SkANP::InitEvent(ANPEvent* event, ANPEventType et, long time) {
+    event->inSize = sizeof(ANPEvent);
+    event->eventType = et;
+    event->timeStamp = time;
 }
diff --git a/WebKit/android/plugins/SkANP.h b/WebKit/android/plugins/SkANP.h
index 5c2a936..8590e10 100644
--- a/WebKit/android/plugins/SkANP.h
+++ b/WebKit/android/plugins/SkANP.h
@@ -74,6 +74,7 @@
     static bool SetBitmap(ANPBitmap* dst, const SkBitmap& src);
     
     static void InitEvent(ANPEvent* event, ANPEventType et);
+    static void InitEvent(ANPEvent* event, ANPEventType et, long time);
 };
 
 #endif
diff --git a/WebKit/android/plugins/android_npapi.h b/WebKit/android/plugins/android_npapi.h
index 4173528..1f2072d 100644
--- a/WebKit/android/plugins/android_npapi.h
+++ b/WebKit/android/plugins/android_npapi.h
@@ -893,6 +893,7 @@
 /* This is what is passed to NPP_HandleEvent() */
 struct ANPEvent {
     uint32_t        inSize;  // size of this struct in bytes
+    uint32_t        timeStamp;
     ANPEventType    eventType;
     // use based on the value in eventType
     union {
