diff options
-rw-r--r-- | WebCore/dom/Event.h | 4 | ||||
-rw-r--r-- | WebCore/page/EventHandler.cpp | 15 | ||||
-rw-r--r-- | WebCore/platform/PlatformTouchEvent.h | 6 | ||||
-rw-r--r-- | WebCore/platform/android/PlatformTouchEventAndroid.cpp | 4 | ||||
-rw-r--r-- | WebCore/plugins/android/PluginViewAndroid.cpp | 6 | ||||
-rw-r--r-- | WebKit/android/jni/WebViewCore.cpp | 10 | ||||
-rw-r--r-- | WebKit/android/jni/WebViewCore.h | 2 | ||||
-rw-r--r-- | WebKit/android/plugins/SkANP.cpp | 8 | ||||
-rw-r--r-- | WebKit/android/plugins/SkANP.h | 1 | ||||
-rw-r--r-- | WebKit/android/plugins/android_npapi.h | 1 |
10 files changed, 45 insertions, 12 deletions
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 @@ namespace WebCore { 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 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) 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 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) 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 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) 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 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) 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 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) 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 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) 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 @@ public: #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 @@ public: 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 @@ private: 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 @@ void PluginView::handleTouchEvent(TouchEvent* event) 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 @@ void PluginView::handleMouseEvent(MouseEvent* event) 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 @@ void PluginView::handleKeyboardEvent(KeyboardEvent* event) 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 @@ void WebViewCore::click(WebCore::Frame* frame, WebCore::Node* node) { } } -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 @@ int WebViewCore::handleTouchEvent(int action, int x, int y) 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 @@ static jstring FindAddress(JNIEnv *env, jobject obj, jstring addr, 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 @@ static JNINativeMethod gJavaWebViewCoreMethods[] = { (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 @@ namespace android { /** * 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 @@ bool SkANP::SetBitmap(ANPBitmap* dst, const SkBitmap& src) { 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 @@ public: 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 @@ typedef uint32_t ANPLifecycleAction; /* 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 { |