summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrace Kloba <klobag@google.com>2010-02-02 21:07:13 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2010-02-02 21:07:13 -0800
commita82364c20d384bb31f845b41cedb1ea62a4fc914 (patch)
treeca627fc65bebab9779a54f5d58ae37a582aef6ca
parent562a8a469695e0a2dee4eb1946847553f04ca2a2 (diff)
parent5b9b4d4efe739cfa2aa117372879c5c37443e644 (diff)
downloadexternal_webkit-a82364c20d384bb31f845b41cedb1ea62a4fc914.zip
external_webkit-a82364c20d384bb31f845b41cedb1ea62a4fc914.tar.gz
external_webkit-a82364c20d384bb31f845b41cedb1ea62a4fc914.tar.bz2
am 5b9b4d4e: Pass touch event time from Java to WebKit
Merge commit '5b9b4d4efe739cfa2aa117372879c5c37443e644' into eclair-mr2-plus-aosp * commit '5b9b4d4efe739cfa2aa117372879c5c37443e644': Pass touch event time from Java to WebKit
-rw-r--r--WebCore/dom/Event.h4
-rw-r--r--WebCore/page/EventHandler.cpp1
-rw-r--r--WebCore/platform/PlatformTouchEvent.h5
-rw-r--r--WebCore/plugins/android/PluginViewAndroid.cpp2
-rw-r--r--WebKit/android/jni/WebViewCore.cpp10
-rw-r--r--WebKit/android/jni/WebViewCore.h2
-rw-r--r--WebKit/android/plugins/SkANP.cpp8
-rw-r--r--WebKit/android/plugins/SkANP.h1
-rw-r--r--WebKit/android/plugins/android_npapi.h1
9 files changed, 26 insertions, 8 deletions
diff --git a/WebCore/dom/Event.h b/WebCore/dom/Event.h
index 7ec85a7..4774ccb 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 8b6b602..d0ca86b 100644
--- a/WebCore/page/EventHandler.cpp
+++ b/WebCore/page/EventHandler.cpp
@@ -2659,6 +2659,7 @@ int EventHandler::handleTouchEvent(const PlatformTouchEvent& e)
default:
return false;
}
+ te->setCreateTime(static_cast<DOMTimeStamp>(e.eventTime()));
ExceptionCode ec = 0;
m_touch->target()->dispatchEvent(te.get(), ec);
if (type == TouchEventEnd || type == TouchEventCancel)
diff --git a/WebCore/platform/PlatformTouchEvent.h b/WebCore/platform/PlatformTouchEvent.h
index 6c8629c..320dbbd 100644
--- a/WebCore/platform/PlatformTouchEvent.h
+++ b/WebCore/platform/PlatformTouchEvent.h
@@ -41,10 +41,11 @@ namespace WebCore {
{
}
- PlatformTouchEvent(const IntPoint& pos, const IntPoint& globalPos, TouchEventType eventType)
+ PlatformTouchEvent(const IntPoint& pos, const IntPoint& globalPos, TouchEventType eventType, long eventTime)
: m_position(pos)
, m_globalPosition(globalPos)
, m_eventType(eventType)
+ , m_eventTime(eventTime)
{
}
@@ -54,11 +55,13 @@ namespace WebCore {
int globalX() const { return m_globalPosition.x(); }
int globalY() const { return m_globalPosition.y(); }
TouchEventType eventType() const { return m_eventType; }
+ long eventTime() const { return m_eventTime; }
private:
IntPoint m_position;
IntPoint m_globalPosition;
TouchEventType m_eventType;
+ long m_eventTime;
};
} // namespace WebCore
diff --git a/WebCore/plugins/android/PluginViewAndroid.cpp b/WebCore/plugins/android/PluginViewAndroid.cpp
index ed7a694..0317ed6 100644
--- a/WebCore/plugins/android/PluginViewAndroid.cpp
+++ b/WebCore/plugins/android/PluginViewAndroid.cpp
@@ -183,7 +183,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();
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 8f5cc45..66646b9 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -2149,7 +2149,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;
@@ -2186,7 +2186,7 @@ int WebViewCore::handleTouchEvent(int action, int x, int y)
break;
}
WebCore::IntPoint pt(x - m_scrollOffsetX, y - m_scrollOffsetY);
- WebCore::PlatformTouchEvent te(pt, pt, type);
+ WebCore::PlatformTouchEvent te(pt, pt, type, time);
preventDefault = m_mainFrame->eventHandler()->handleTouchEvent(te);
#endif
@@ -2948,14 +2948,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,
@@ -3360,7 +3360,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 f1893ff..ee87d84 100644
--- a/WebKit/android/jni/WebViewCore.h
+++ b/WebKit/android/jni/WebViewCore.h
@@ -283,7 +283,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 {