https://bugs.webkit.org/show_bug.cgi?id=66105
Patch by Sadrul Habib Chowdhury <sadrul@chromium.org> on 2011-08-12
Reviewed by Darin Fisher.
* public/WebInputEvent.h:
* src/WebInputEventConversion.cpp:
(WebKit::PlatformGestureEventBuilder::PlatformGestureEventBuilder):
* src/WebPopupMenuImpl.cpp:
(WebKit::WebPopupMenuImpl::handleInputEvent):
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::handleInputEvent):
Tools: DRT: Add support for gesture events.
https://bugs.webkit.org/show_bug.cgi?id=66105
Patch by Sadrul Habib Chowdhury <sadrul@chromium.org> on 2011-08-12
Reviewed by Darin Fisher.
* DumpRenderTree/chromium/EventSender.cpp:
(EventSender::EventSender):
(EventSender::gestureScrollBegin):
(EventSender::gestureScrollEnd):
(EventSender::gestureTap):
(EventSender::gestureEvent):
* DumpRenderTree/chromium/EventSender.h:
LayoutTests: DRT: Add support for gesture events.
https://bugs.webkit.org/show_bug.cgi?id=66105
Patch by Sadrul Habib Chowdhury <sadrul@chromium.org> on 2011-08-12
Reviewed by Darin Fisher.
* fast/events/touch/gesture/gesture-click-expected.txt: Added.
* fast/events/touch/gesture/gesture-click.html: Added.
* platform/chromium/fast/events/touch/gesture/gesture-click-expected.txt: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@92997
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-08-12 Sadrul Habib Chowdhury <sadrul@chromium.org>
+
+ DRT: Add support for gesture events.
+ https://bugs.webkit.org/show_bug.cgi?id=66105
+
+ Reviewed by Darin Fisher.
+
+ * fast/events/touch/gesture/gesture-click-expected.txt: Added.
+ * fast/events/touch/gesture/gesture-click.html: Added.
+ * platform/chromium/fast/events/touch/gesture/gesture-click-expected.txt: Added.
+
2011-08-12 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=66133
--- /dev/null
+This tests basic gesture callbacks.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Gesture manager not implemented on this platform.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../../js/resources/js-test-style.css">
+<script src="../../../js/resources/js-test-pre.js"></script>
+<script src="../../../js/resources/js-test-post-function.js"></script>
+</head>
+<body onload="runTest();">
+<div id="gesture">
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+var expectedMouseEvents = 4;
+var mouseEventsReceived = 0;
+var eventTypes = [ 'mousemove', 'mousedown', 'mouseup', 'click' ];
+
+function gestureEventCallback(event)
+{
+ if (window.eventSender) {
+ shouldBeEqualToString('event.type', eventTypes[mouseEventsReceived]);
+ shouldBe('event.clientX', '10');
+ shouldBe('event.clientY', '12');
+ mouseEventsReceived++;
+ } else {
+ debug(event.type);
+ debug(event.clientX);
+ debug(event.clientY);
+ }
+}
+
+// Because we may not have a gesture recognizer, we send a key press
+// event to end the test without temporal flakiness.
+function quitKeyToEndTest(event) {
+ endTest();
+}
+
+function endTest()
+{
+ if (mouseEventsReceived < expectedMouseEvents) {
+ debug('Gesture manager not implemented on this platform.');
+ }
+ // Bail.
+ successfullyParsed = true;
+ isSuccessfullyParsed();
+ layoutTestController.notifyDone();
+}
+
+function runTest() {
+ var div = document.getElementById('gesture');
+ div.addEventListener("mousedown", gestureEventCallback, false);
+ div.addEventListener("click", gestureEventCallback, false);
+ div.addEventListener("mouseup", gestureEventCallback, false);
+ div.addEventListener("mousemove", gestureEventCallback, false);
+ document.addEventListener("keydown", quitKeyToEndTest, false);
+
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ if (window.eventSender) {
+ description("This tests basic gesture callbacks.");
+ // A 'tap' gesture event should generate a sequence of mouse events.
+ eventSender.gestureTap(10, 12);
+ eventSender.leapForward(10);
+ eventSender.keyDown(' ');
+ } else {
+ debug("This test requires DumpRenderTree. Tap on the blue rect to log.")
+ }
+}
+</script>
+</body>
+</html>
--- /dev/null
+This tests basic gesture callbacks.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS event.type is "mousemove"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS event.type is "mousedown"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS event.type is "mouseup"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS event.type is "click"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+2011-08-12 Sadrul Habib Chowdhury <sadrul@chromium.org>
+
+ Wire gesture tap events, add support for gesture events in the DRT and add a layout test for it.
+ https://bugs.webkit.org/show_bug.cgi?id=66105
+
+ Reviewed by Darin Fisher.
+
+ * public/WebInputEvent.h:
+ * src/WebInputEventConversion.cpp:
+ (WebKit::PlatformGestureEventBuilder::PlatformGestureEventBuilder):
+ * src/WebPopupMenuImpl.cpp:
+ (WebKit::WebPopupMenuImpl::handleInputEvent):
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::handleInputEvent):
+
2011-08-12 Tommy Widenflycht <tommyw@google.com>
[Chromium] Implement the embedders for the HTML5 Track List objects
// WebGestureEvent
GestureScrollBegin,
GestureScrollEnd,
+ GestureTap,
// WebTouchEvent
TouchStart,
case WebInputEvent::GestureScrollEnd:
m_type = PlatformGestureEvent::ScrollEndType;
break;
+ case WebInputEvent::GestureTap:
+ m_type = PlatformGestureEvent::TapType;
+ break;
default:
ASSERT_NOT_REACHED();
}
case WebInputEvent::GestureScrollBegin:
case WebInputEvent::GestureScrollEnd:
+ case WebInputEvent::GestureTap:
return GestureEvent(*static_cast<const WebGestureEvent*>(&inputEvent));
case WebInputEvent::Undefined:
#if ENABLE(GESTURE_EVENTS)
case WebInputEvent::GestureScrollBegin:
case WebInputEvent::GestureScrollEnd:
+ case WebInputEvent::GestureTap:
handled = gestureEvent(*static_cast<const WebGestureEvent*>(&inputEvent));
break;
#endif
+2011-08-12 Sadrul Habib Chowdhury <sadrul@chromium.org>
+
+ DRT: Add support for gesture events.
+ https://bugs.webkit.org/show_bug.cgi?id=66105
+
+ Reviewed by Darin Fisher.
+
+ * DumpRenderTree/chromium/EventSender.cpp:
+ (EventSender::EventSender):
+ (EventSender::gestureScrollBegin):
+ (EventSender::gestureScrollEnd):
+ (EventSender::gestureTap):
+ (EventSender::gestureEvent):
+ * DumpRenderTree/chromium/EventSender.h:
+
2011-08-12 Andy Estes <aestes@apple.com>
allowRoundingHacksCallback uses the wrong argument for 'thisObject'.
bindMethod("touchMove", &EventSender::touchMove);
bindMethod("touchStart", &EventSender::touchStart);
bindMethod("updateTouchPoint", &EventSender::updateTouchPoint);
+ bindMethod("gestureScrollBegin", &EventSender::gestureScrollBegin);
+ bindMethod("gestureScrollEnd", &EventSender::gestureScrollEnd);
+ bindMethod("gestureTap", &EventSender::gestureTap);
bindMethod("zoomPageIn", &EventSender::zoomPageIn);
bindMethod("zoomPageOut", &EventSender::zoomPageOut);
bindMethod("scalePageBy", &EventSender::scalePageBy);
sendCurrentTouchEvent(WebInputEvent::TouchCancel);
}
+void EventSender::gestureScrollBegin(const CppArgumentList& arguments, CppVariant* result)
+{
+ result->setNull();
+ gestureEvent(WebInputEvent::GestureScrollBegin, arguments);
+}
+
+void EventSender::gestureScrollEnd(const CppArgumentList& arguments, CppVariant* result)
+{
+ result->setNull();
+ gestureEvent(WebInputEvent::GestureScrollEnd, arguments);
+}
+
+void EventSender::gestureTap(const CppArgumentList& arguments, CppVariant* result)
+{
+ result->setNull();
+ gestureEvent(WebInputEvent::GestureTap, arguments);
+}
+
+void EventSender::gestureEvent(WebInputEvent::Type type, const CppArgumentList& arguments)
+{
+ if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumber())
+ return;
+
+ WebPoint point(arguments[0].toInt32(), arguments[1].toInt32());
+
+ WebGestureEvent event;
+ event.type = type;
+ event.x = point.x;
+ event.y = point.y;
+ event.globalX = point.x;
+ event.globalY = point.y;
+ event.timeStampSeconds = getCurrentEventTimeSec();
+ webview()->handleInputEvent(event);
+}
+
//
// Unimplemented stubs
//
void touchStart(const CppArgumentList&, CppVariant*);
void updateTouchPoint(const CppArgumentList&, CppVariant*);
+ void gestureScrollBegin(const CppArgumentList&, CppVariant*);
+ void gestureScrollEnd(const CppArgumentList&, CppVariant*);
+ void gestureTap(const CppArgumentList&, CppVariant*);
+ void gestureEvent(WebKit::WebInputEvent::Type, const CppArgumentList&);
+
// Unimplemented stubs
void contextClick(const CppArgumentList&, CppVariant*);
void enableDOMUIEventLogging(const CppArgumentList&, CppVariant*);