Title: [118103] trunk
Revision
118103
Author
[email protected]
Date
2012-05-22 19:37:31 -0700 (Tue, 22 May 2012)

Log Message

[EFL][DRT] Implement touch event
https://bugs.webkit.org/show_bug.cgi?id=86720

Patch by Kangil Han <[email protected]> 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:

Modified Paths

Diff

Modified: trunk/ChangeLog (118102 => 118103)


--- trunk/ChangeLog	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/ChangeLog	2012-05-23 02:37:31 UTC (rev 118103)
@@ -1 +1,14 @@
+2012-05-22  Kangil Han  <[email protected]>
+
+        [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 ==

Modified: trunk/LayoutTests/ChangeLog (118102 => 118103)


--- trunk/LayoutTests/ChangeLog	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/LayoutTests/ChangeLog	2012-05-23 02:37:31 UTC (rev 118103)
@@ -1,3 +1,15 @@
+2012-05-22  Kangil Han  <[email protected]>
+
+        [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  <[email protected]>
 
         See https://bugs.webkit.org/show_bug.cgi?id=87187

Modified: trunk/LayoutTests/platform/efl/Skipped (118102 => 118103)


--- trunk/LayoutTests/platform/efl/Skipped	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/LayoutTests/platform/efl/Skipped	2012-05-23 02:37:31 UTC (rev 118103)
@@ -53,8 +53,9 @@
 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-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

Modified: trunk/Source/WebCore/ChangeLog (118102 => 118103)


--- trunk/Source/WebCore/ChangeLog	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebCore/ChangeLog	2012-05-23 02:37:31 UTC (rev 118103)
@@ -1,3 +1,18 @@
+2012-05-22  Kangil Han  <[email protected]>
+
+        [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  <[email protected]>
 
         AudioNodeOutput::disconnectAllParams() must take care when iterating through its parameter list

Modified: trunk/Source/WebCore/platform/PlatformTouchEvent.h (118102 => 118103)


--- trunk/Source/WebCore/platform/PlatformTouchEvent.h	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebCore/platform/PlatformTouchEvent.h	2012-05-23 02:37:31 UTC (rev 118103)
@@ -61,7 +61,7 @@
     }
 
 #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

Modified: trunk/Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp (118102 => 118103)


--- trunk/Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp	2012-05-23 02:37:31 UTC (rev 118103)
@@ -35,19 +35,17 @@
 
 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.
 }
 
 }

Modified: trunk/Source/WebKit/efl/ChangeLog (118102 => 118103)


--- trunk/Source/WebKit/efl/ChangeLog	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebKit/efl/ChangeLog	2012-05-23 02:37:31 UTC (rev 118103)
@@ -1,3 +1,18 @@
+2012-05-22  Kangil Han  <[email protected]>
+
+        [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  <[email protected]>
 
         [EFL] EFL's DRT needs to print information about received Web Intents

Modified: trunk/Source/WebKit/efl/ewebkit.pc.in (118102 => 118103)


--- trunk/Source/WebKit/efl/ewebkit.pc.in	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebKit/efl/ewebkit.pc.in	2012-05-23 02:37:31 UTC (rev 118103)
@@ -7,7 +7,7 @@
 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@

Modified: trunk/Source/WebKit/efl/ewk/ewk_frame.cpp (118102 => 118103)


--- trunk/Source/WebKit/efl/ewk/ewk_frame.cpp	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebKit/efl/ewk/ewk_frame.cpp	2012-05-23 02:37:31 UTC (rev 118103)
@@ -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 @@
     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 @@
         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;

Modified: trunk/Source/WebKit/efl/ewk/ewk_frame.h (118102 => 118103)


--- trunk/Source/WebKit/efl/ewk/ewk_frame.h	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/WebKit/efl/ewk/ewk_frame.h	2012-05-23 02:37:31 UTC (rev 118103)
@@ -861,11 +861,11 @@
  * @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.

Modified: trunk/Source/cmake/FindEFL.cmake (118102 => 118103)


--- trunk/Source/cmake/FindEFL.cmake	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/cmake/FindEFL.cmake	2012-05-23 02:37:31 UTC (rev 118103)
@@ -11,7 +11,8 @@
   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)

Modified: trunk/Source/cmake/OptionsEfl.cmake (118102 => 118103)


--- trunk/Source/cmake/OptionsEfl.cmake	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Source/cmake/OptionsEfl.cmake	2012-05-23 02:37:31 UTC (rev 118103)
@@ -77,6 +77,7 @@
 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)

Modified: trunk/Tools/ChangeLog (118102 => 118103)


--- trunk/Tools/ChangeLog	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Tools/ChangeLog	2012-05-23 02:37:31 UTC (rev 118103)
@@ -1,3 +1,30 @@
+2012-05-22  Kangil Han  <[email protected]>
+
+        [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  <[email protected]>
 
         [Chromium-Android] Fix chromium_android_unittest

Modified: trunk/Tools/DumpRenderTree/efl/EventSender.cpp (118102 => 118103)


--- trunk/Tools/DumpRenderTree/efl/EventSender.cpp	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Tools/DumpRenderTree/efl/EventSender.cpp	2012-05-23 02:37:31 UTC (rev 118103)
@@ -36,11 +36,14 @@
 
 #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 <_javascript_Core/JSObjectRef.h>
 #include <_javascript_Core/JSRetainPtr.h>
 #include <_javascript_Core/JSStringRef.h>
@@ -149,6 +152,27 @@
     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 @@
     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 @@
     { "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 }
 };
 

Modified: trunk/Tools/Scripts/webkitperl/FeatureList.pm (118102 => 118103)


--- trunk/Tools/Scripts/webkitperl/FeatureList.pm	2012-05-23 02:34:13 UTC (rev 118102)
+++ trunk/Tools/Scripts/webkitperl/FeatureList.pm	2012-05-23 02:37:31 UTC (rev 118103)
@@ -322,7 +322,7 @@
       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 },
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to