[EFL][DRT] Implement touch event
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 May 2012 02:37:31 +0000 (02:37 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 May 2012 02:37:31 +0000 (02:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=86720

Patch by Kangil Han <kangil.han@samsung.com> on 2012-05-22
Reviewed by Hajime Morita.

Currently EFL DRT doesn't support touch event.
Therefore, this patch enabled it and implemented some eventSender function callbacks.

.:

* Source/cmake/FindEFL.cmake: Add ecore-input to dependency check.
* Source/cmake/OptionsEfl.cmake: Enable touch event option.

Source/WebCore:

* platform/PlatformTouchEvent.h:
(PlatformTouchEvent): Implement meta state.
* platform/efl/PlatformTouchEventEfl.cpp:
(WebCore::PlatformTouchEvent::PlatformTouchEvent): Implement meta state.

Source/WebKit/efl:

* ewebkit.pc.in:
* ewk/ewk_frame.cpp:
(ewk_frame_feed_touch_event):
* ewk/ewk_frame.h:

Tools:

* DumpRenderTree/efl/EventSender.cpp:
(TouchEventInfo::TouchEventInfo):
(TouchEventInfo):
(touchPointList):
(sendTouchEvent):
(addTouchPointCallback):
(touchStartCallback):
(updateTouchPointCallback):
(touchMoveCallback):
(cancelTouchPointCallback):
(touchCancelCallback):
(releaseTouchPointCallback):
(touchEndCallback):
(clearTouchPointsCallback):
(setTouchModifierCallback):
* Scripts/webkitperl/FeatureList.pm:

LayoutTests:

* platform/efl/Skipped:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@118103 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
ChangeLog
LayoutTests/ChangeLog
LayoutTests/platform/efl/Skipped
Source/WebCore/ChangeLog
Source/WebCore/platform/PlatformTouchEvent.h
Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp
Source/WebKit/efl/ChangeLog
Source/WebKit/efl/ewebkit.pc.in
Source/WebKit/efl/ewk/ewk_frame.cpp
Source/WebKit/efl/ewk/ewk_frame.h
Source/cmake/FindEFL.cmake
Source/cmake/OptionsEfl.cmake
Tools/ChangeLog
Tools/DumpRenderTree/efl/EventSender.cpp
Tools/Scripts/webkitperl/FeatureList.pm

index 406c4c3..5f4f8b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1 +1,14 @@
+2012-05-22  Kangil Han  <kangil.han@samsung.com>
+
+        [EFL][DRT] Implement touch event
+        https://bugs.webkit.org/show_bug.cgi?id=86720
+
+        Reviewed by Hajime Morita.
+
+        Currently EFL DRT doesn't support touch event.
+        Therefore, this patch enabled it and implemented some eventSender function callbacks.
+
+        * Source/cmake/FindEFL.cmake: Add ecore-input to dependency check.
+        * Source/cmake/OptionsEfl.cmake: Enable touch event option.
+
 == Rolled over to ChangeLog-2012-05-22 ==
index c4c54cc..c5b6f1b 100644 (file)
@@ -1,3 +1,15 @@
+2012-05-22  Kangil Han  <kangil.han@samsung.com>
+
+        [EFL][DRT] Implement touch event
+        https://bugs.webkit.org/show_bug.cgi?id=86720
+
+        Reviewed by Hajime Morita.
+
+        Currently EFL DRT doesn't support touch event.
+        Therefore, this patch enabled it and implemented some eventSender function callbacks.
+
+        * platform/efl/Skipped:
+
 2012-05-22  Stephanie Lewis  <slewis@apple.com>
 
         See https://bugs.webkit.org/show_bug.cgi?id=87187
index e96054e..b67e986 100644 (file)
@@ -53,8 +53,9 @@ http/tests/local/fileapi/send-sliced-dragged-file.html
 http/tests/local/formdata
 http/tests/security/clipboard/clipboard-file-access.html
 
-# EFL's EventSender does not implement addTouchPoint, clearTouchPoints, touchStart and other touch-related callbacks
-fast/events/touch
+# EFL's EventSender does not implement gesture-related callbacks
+fast/events/touch/gesture
+fast/events/touch/page-scaled-touch-gesture-click.html
 
 # EFL's port requires implementation of ClipboardEfl and DragClientEfl classes in order to suppport drag n drop functionality
 fast/events/drag-and-drop-subframe-dataTransfer.html
@@ -420,6 +421,7 @@ fast/forms/number/input-number-size.html
 fast/forms/number/input-spinbutton-capturing.html
 fast/forms/number/spin-button-gets-disabled-or-readonly.html
 fast/forms/number/spin-button-state.html
+fast/events/touch/touch-before-pressing-spin-button.html
 
 # This test is out-dated since r95899.
 # https://bugs.webkit.org/show_bug.cgi?id=65709
index bb4a246..2ce04db 100644 (file)
@@ -1,3 +1,18 @@
+2012-05-22  Kangil Han  <kangil.han@samsung.com>
+
+        [EFL][DRT] Implement touch event
+        https://bugs.webkit.org/show_bug.cgi?id=86720
+
+        Reviewed by Hajime Morita.
+
+        Currently EFL DRT doesn't support touch event.
+        Therefore, this patch enabled it and implemented some eventSender function callbacks.
+
+        * platform/PlatformTouchEvent.h:
+        (PlatformTouchEvent): Implement meta state.
+        * platform/efl/PlatformTouchEventEfl.cpp:
+        (WebCore::PlatformTouchEvent::PlatformTouchEvent): Implement meta state.
+
 2012-05-22  Chris Rogers  <crogers@google.com>
 
         AudioNodeOutput::disconnectAllParams() must take care when iterating through its parameter list
index 59cbb20..019bd2a 100644 (file)
@@ -61,7 +61,7 @@ public:
     }
 
 #if PLATFORM(EFL)
-    PlatformTouchEvent(Eina_List*, const IntPoint, PlatformEvent::Type, int metaState);
+    PlatformTouchEvent(const Eina_List*, const IntPoint, PlatformEvent::Type, PlatformEvent::Modifiers);
 #elif PLATFORM(BLACKBERRY)
     PlatformTouchEvent(BlackBerry::Platform::TouchEvent*);
 #endif
index 23a0fbd..61316d2 100644 (file)
 
 namespace WebCore {
 
-PlatformTouchEvent::PlatformTouchEvent(Eina_List* points, const IntPoint pos, PlatformEvent::Type type, int metaState)
-    : PlatformEvent(type, false, false, false, false, currentTime())
+PlatformTouchEvent::PlatformTouchEvent(const Eina_List* points, const IntPoint pos, PlatformEvent::Type type, PlatformEvent::Modifiers modifiers)
+    : PlatformEvent(type, modifiers, currentTime())
 {
+    const Eina_List* list;
     void* item;
 
-    EINA_LIST_FREE(points, item) {
+    EINA_LIST_FOREACH(points, list, item) {
         Ewk_Touch_Point* point = static_cast<Ewk_Touch_Point*>(item);
         IntPoint pnt = IntPoint(point->x - pos.x(), point->y - pos.y());
-
         m_touchPoints.append(PlatformTouchPoint(point->id, pnt, static_cast<PlatformTouchPoint::State>(point->state)));
     }
-
-    // FIXME: We don't support metaState for now.
 }
 
 }
index 7a7ea30..6146e20 100644 (file)
@@ -1,3 +1,18 @@
+2012-05-22  Kangil Han  <kangil.han@samsung.com>
+
+        [EFL][DRT] Implement touch event
+        https://bugs.webkit.org/show_bug.cgi?id=86720
+
+        Reviewed by Hajime Morita.
+
+        Currently EFL DRT doesn't support touch event.
+        Therefore, this patch enabled it and implemented some eventSender function callbacks.
+
+        * ewebkit.pc.in:
+        * ewk/ewk_frame.cpp:
+        (ewk_frame_feed_touch_event):
+        * ewk/ewk_frame.h:
+
 2012-05-22  Christophe Dumez  <christophe.dumez@intel.com>
 
         [EFL] EFL's DRT needs to print information about received Web Intents
index dd61783..0d9be3f 100644 (file)
@@ -7,7 +7,7 @@ datadir=${prefix}/share/@WebKit_LIBRARY_NAME@-@PROJECT_VERSION_MAJOR@
 Name: WebKit-EFL
 Description: Web content engine for EFL applications
 Version: @PROJECT_VERSION@
-Requires: cairo evas ecore libsoup-2.4
+Requires: cairo evas ecore libsoup-2.4 ecore-input
 Libs: -L${libdir} -lewebkit @EXTRA_EWEBKIT_LINK@
 Libs.private: @LIBS_PRIVATE@
 Cflags: -I${includedir}/@WebKit_LIBRARY_NAME@-@PROJECT_VERSION_MAJOR@
index a002a4c..848d150 100644 (file)
@@ -54,6 +54,7 @@
 #include "ewk_private.h"
 #include "ewk_security_origin_private.h"
 #include "ewk_view_private.h"
+#include <Ecore_Input.h>
 #include <Eina.h>
 #include <Evas.h>
 #include <eina_safety_checks.h>
@@ -948,7 +949,7 @@ Eina_Bool ewk_frame_feed_mouse_move(Evas_Object* ewkFrame, const Evas_Event_Mous
     return smartData->frame->eventHandler()->mouseMoved(event);
 }
 
-Eina_Bool ewk_frame_feed_touch_event(Evas_Object* ewkFrame, Ewk_Touch_Event_Type action, Eina_List* points, int metaState)
+Eina_Bool ewk_frame_feed_touch_event(Evas_Object* ewkFrame, Ewk_Touch_Event_Type action, Eina_List* points, unsigned modifiers)
 {
 #if ENABLE(TOUCH_EVENTS)
     EINA_SAFETY_ON_NULL_RETURN_VAL(points, false);
@@ -979,7 +980,17 @@ Eina_Bool ewk_frame_feed_touch_event(Evas_Object* ewkFrame, Ewk_Touch_Event_Type
         return false;
     }
 
-    WebCore::PlatformTouchEvent touchEvent(points, WebCore::IntPoint(x, y), type, metaState);
+    unsigned touchModifiers = 0;
+    if (modifiers & ECORE_EVENT_MODIFIER_ALT)
+        touchModifiers |= WebCore::PlatformEvent::AltKey;
+    if (modifiers & ECORE_EVENT_MODIFIER_CTRL)
+        touchModifiers |= WebCore::PlatformEvent::CtrlKey;
+    if (modifiers & ECORE_EVENT_MODIFIER_SHIFT)
+        touchModifiers |= WebCore::PlatformEvent::ShiftKey;
+    if (modifiers & ECORE_EVENT_MODIFIER_WIN)
+        touchModifiers |= WebCore::PlatformEvent::MetaKey;
+
+    WebCore::PlatformTouchEvent touchEvent(points, WebCore::IntPoint(x, y), type, static_cast<WebCore::PlatformEvent::Modifiers>(touchModifiers));
     return smartData->frame->eventHandler()->handleTouchEvent(touchEvent);
 #else
     return false;
index c5bebcd..cbd4a4c 100644 (file)
@@ -861,11 +861,11 @@ EAPI Eina_Bool    ewk_frame_feed_mouse_move(Evas_Object *o, const Evas_Event_Mou
  * @param o frame object to feed touch event
  * @param action the action of touch event
  * @param points a list of points (Ewk_Touch_Point) to process
- * @param metaState DEPRECTAED, not supported for now
+ * @param metaState modifiers state of touch event. Users are expected to pass ORed values of the ECORE_EVENT_MODIFIER macros in Ecore_Input.h, such as ECORE_EVENT_MODIFIER_ALT or ECORE_EVENT_MODIFIER_SHIFT
  *
  * @return @c EINA_TRUE if touch event was handled, @c EINA_FALSE otherwise
  */
-EAPI Eina_Bool    ewk_frame_feed_touch_event(Evas_Object *o, Ewk_Touch_Event_Type action, Eina_List *points, int metaState);
+EAPI Eina_Bool    ewk_frame_feed_touch_event(Evas_Object *o, Ewk_Touch_Event_Type action, Eina_List *points, unsigned modifiers);
 
 /**
  * Feeds the keyboard key down event to the frame.
index 8c9b566..4a4cab0 100644 (file)
@@ -11,7 +11,8 @@ PKG_CHECK_MODULES (EFLDEPS REQUIRED
   ecore-evas>=1.0.999.59763
   edje>=1.0.0
   eukit>=1.1.0
-  edbus>=1.1.0)
+  edbus>=1.1.0
+  ecore-input>=1.0.0)
 PKG_CHECK_MODULES (EINA REQUIRED eina>=1.0.0)
 PKG_CHECK_MODULES (ECORE_X ecore-x>=1.0.0)
 PKG_CHECK_MODULES (EVAS REQUIRED evas>=1.0.0)
index 21128c0..ac199be 100644 (file)
@@ -77,6 +77,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_INFO ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PAGE_VISIBILITY_API ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REQUEST_ANIMATION_FRAME ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHARED_WORKERS ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIBRATION ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO_TRACK ON)
index e622d29..8568cea 100644 (file)
@@ -1,3 +1,30 @@
+2012-05-22  Kangil Han  <kangil.han@samsung.com>
+
+        [EFL][DRT] Implement touch event
+        https://bugs.webkit.org/show_bug.cgi?id=86720
+
+        Reviewed by Hajime Morita.
+
+        Currently EFL DRT doesn't support touch event.
+        Therefore, this patch enabled it and implemented some eventSender function callbacks.
+
+        * DumpRenderTree/efl/EventSender.cpp:
+        (TouchEventInfo::TouchEventInfo):
+        (TouchEventInfo):
+        (touchPointList):
+        (sendTouchEvent):
+        (addTouchPointCallback):
+        (touchStartCallback):
+        (updateTouchPointCallback):
+        (touchMoveCallback):
+        (cancelTouchPointCallback):
+        (touchCancelCallback):
+        (releaseTouchPointCallback):
+        (touchEndCallback):
+        (clearTouchPointsCallback):
+        (setTouchModifierCallback):
+        * Scripts/webkitperl/FeatureList.pm:
+
 2012-05-22  Xianzhu Wang  <wangxianzhu@chromium.org>
 
         [Chromium-Android] Fix chromium_android_unittest
index ee0cf4a..bd1c043 100644 (file)
 
 #include "DumpRenderTree.h"
 #include "DumpRenderTreeChrome.h"
+#include "IntPoint.h"
 #include "JSStringUtils.h"
 #include "NotImplemented.h"
+#include "PlatformEvent.h"
 #include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
 #include "ewk_private.h"
 #include <EWebKit.h>
+#include <Ecore_Input.h>
 #include <JavaScriptCore/JSObjectRef.h>
 #include <JavaScriptCore/JSRetainPtr.h>
 #include <JavaScriptCore/JSStringRef.h>
@@ -149,6 +152,27 @@ struct DelayedEvent {
     unsigned long delay;
 };
 
+struct TouchEventInfo {
+    TouchEventInfo(unsigned id, Ewk_Touch_Point_Type state, const WebCore::IntPoint& point)
+        : state(state)
+        , point(point)
+        , id(id)
+    {
+    }
+
+    unsigned id;
+    Ewk_Touch_Point_Type state;
+    WebCore::IntPoint point;
+};
+
+static unsigned touchModifiers;
+
+WTF::Vector<TouchEventInfo>& touchPointList()
+{
+    DEFINE_STATIC_LOCAL(WTF::Vector<TouchEventInfo>, staticTouchPointList, ());
+    return staticTouchPointList;
+}
+
 WTF::Vector<DelayedEvent>& delayedEventQueue()
 {
     DEFINE_STATIC_LOCAL(WTF::Vector<DelayedEvent>, staticDelayedEventQueue, ());
@@ -591,6 +615,163 @@ static JSValueRef scheduleAsynchronousKeyDownCallback(JSContextRef context, JSOb
     return JSValueMakeUndefined(context);
 }
 
+static void sendTouchEvent(Ewk_Touch_Event_Type type)
+{
+    Eina_List* eventList = 0;
+
+    for (unsigned i = 0; i < touchPointList().size(); ++i) {
+        Ewk_Touch_Point* event = new Ewk_Touch_Point;
+        WebCore::IntPoint point = touchPointList().at(i).point;
+        event->id = touchPointList().at(i).id;
+        event->x = point.x();
+        event->y = point.y();
+        event->state = touchPointList().at(i).state;
+        eventList = eina_list_append(eventList, event);
+    }
+
+    ewk_frame_feed_touch_event(browser->mainFrame(), type, eventList, touchModifiers);
+
+    void* listData;
+    EINA_LIST_FREE(eventList, listData) {
+        Ewk_Touch_Point* event = static_cast<Ewk_Touch_Point*>(listData);
+        delete event;
+    }
+
+    for (unsigned i = 0; i < touchPointList().size(); ) {
+        if (touchPointList().at(i).state == EWK_TOUCH_POINT_RELEASED)
+            touchPointList().remove(i);
+        else {
+            touchPointList().at(i).state = EWK_TOUCH_POINT_STATIONARY;
+            ++i;
+        }
+    }
+}
+
+static JSValueRef addTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    if (argumentCount != 2)
+        return JSValueMakeUndefined(context);
+
+    int x = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
+    ASSERT(!exception || !*exception);
+    int y = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
+    ASSERT(!exception || !*exception);
+
+    const WebCore::IntPoint point(x, y);
+    const unsigned id = touchPointList().isEmpty() ? 0 : touchPointList().last().id + 1;
+    TouchEventInfo eventInfo(id, EWK_TOUCH_POINT_PRESSED, point);
+    touchPointList().append(eventInfo);
+
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef touchStartCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    sendTouchEvent(EWK_TOUCH_START);
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef updateTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    if (argumentCount != 3)
+        return JSValueMakeUndefined(context);
+
+    int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
+    ASSERT(!exception || !*exception);
+    int x = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
+    ASSERT(!exception || !*exception);
+    int y = static_cast<int>(JSValueToNumber(context, arguments[2], exception));
+    ASSERT(!exception || !*exception);
+
+    if (index < 0 || index >= touchPointList().size())
+        return JSValueMakeUndefined(context);
+
+    WebCore::IntPoint& point = touchPointList().at(index).point;
+    point.setX(x);
+    point.setY(y);
+    touchPointList().at(index).state = EWK_TOUCH_POINT_MOVED;
+
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef touchMoveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    sendTouchEvent(EWK_TOUCH_MOVE);
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef cancelTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    if (argumentCount != 1)
+        return JSValueMakeUndefined(context);
+
+    int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
+    ASSERT(!exception || !*exception);
+    if (index < 0 || index >= touchPointList().size())
+        return JSValueMakeUndefined(context);
+
+    touchPointList().at(index).state = EWK_TOUCH_POINT_CANCELLED;
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef touchCancelCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    sendTouchEvent(EWK_TOUCH_CANCEL);
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef releaseTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    if (argumentCount != 1)
+        return JSValueMakeUndefined(context);
+
+    int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
+    ASSERT(!exception || !*exception);
+    if (index < 0 || index >= touchPointList().size())
+        return JSValueMakeUndefined(context);
+
+    touchPointList().at(index).state = EWK_TOUCH_POINT_RELEASED;
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef touchEndCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    sendTouchEvent(EWK_TOUCH_END);
+    touchModifiers = 0;
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef clearTouchPointsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    touchPointList().clear();
+    return JSValueMakeUndefined(context);
+}
+
+static JSValueRef setTouchModifierCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+    if (argumentCount != 2)
+        return JSValueMakeUndefined(context);
+
+    JSRetainPtr<JSStringRef> jsModifier(Adopt, JSValueToStringCopy(context, arguments[0], exception));
+    unsigned mask = 0;
+
+    if (equals(jsModifier, "alt"))
+        mask |= ECORE_EVENT_MODIFIER_ALT;
+    else if (equals(jsModifier, "ctrl"))
+        mask |= ECORE_EVENT_MODIFIER_CTRL;
+    else if (equals(jsModifier, "meta"))
+        mask |= ECORE_EVENT_MODIFIER_WIN;
+    else if (equals(jsModifier, "shift"))
+        mask |= ECORE_EVENT_MODIFIER_SHIFT;
+
+    if (JSValueToBoolean(context, arguments[1]))
+        touchModifiers |= mask;
+    else
+        touchModifiers &= ~mask;
+
+    return JSValueMakeUndefined(context);
+}
+
 static JSStaticFunction staticFunctions[] = {
     { "mouseScrollBy", mouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     { "continuousMouseScrollBy", continuousMouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -606,6 +787,16 @@ static JSStaticFunction staticFunctions[] = {
     { "textZoomOut", textZoomOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     { "zoomPageIn", zoomPageInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     { "zoomPageOut", zoomPageOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "addTouchPoint", addTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "touchStart", touchStartCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "updateTouchPoint", updateTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "touchMove", touchMoveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "releaseTouchPoint", releaseTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "touchEnd", touchEndCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "cancelTouchPoint", cancelTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "touchCancel", touchCancelCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "clearTouchPoints", clearTouchPointsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+    { "setTouchModifier", setTouchModifierCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     { 0, 0, 0 }
 };
 
index e74a794..a540eb0 100644 (file)
@@ -322,7 +322,7 @@ my @features = (
       define => "WTF_USE_TILED_BACKING_STORE", default => isQt(), value => \$tiledBackingStoreSupport },
 
     { option => "touch-events", desc => "Toggle Touch Events support",
-      define => "ENABLE_TOUCH_EVENTS", default => (isQt() || isBlackBerry()), value => \$touchEventsSupport },
+      define => "ENABLE_TOUCH_EVENTS", default => (isQt() || isBlackBerry() || isEfl()), value => \$touchEventsSupport },
 
     { option => "touch-icon-loading", desc => "Toggle Touch Icon Loading Support",
       define => "ENABLE_TOUCH_ICON_LOADING", default => 0, value => \$touchIconLoadingSupport },