Diff
Modified: trunk/LayoutTests/ChangeLog (124672 => 124673)
--- trunk/LayoutTests/ChangeLog 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/LayoutTests/ChangeLog 2012-08-03 23:45:04 UTC (rev 124673)
@@ -1,3 +1,16 @@
+2012-08-03 Rick Byers <[email protected]>
+
+ Double tap gesture should send dblclick event
+ https://bugs.webkit.org/show_bug.cgi?id=92412
+
+ Reviewed by Adam Barth.
+
+ Adds test for derived mouse events generated by a sequence of two tap
+ events. Modeled after gesture-click.html.
+ * fast/events/touch/gesture/gesture-dblclick-expected.txt: Added.
+ * fast/events/touch/gesture/gesture-dblclick.html: Added.
+ * platform/chromium/fast/events/touch/gesture/gesture-dblclick-expected.txt: Added.
+
2012-08-03 Sheriff Bot <[email protected]>
Unreviewed, rolling out r124668.
Added: trunk/LayoutTests/fast/events/touch/gesture/gesture-dblclick-expected.txt (0 => 124673)
--- trunk/LayoutTests/fast/events/touch/gesture/gesture-dblclick-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/gesture/gesture-dblclick-expected.txt 2012-08-03 23:45:04 UTC (rev 124673)
@@ -0,0 +1,10 @@
+This tests gesture callbacks for the double tap gesture.
+
+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
+
Added: trunk/LayoutTests/fast/events/touch/gesture/gesture-dblclick.html (0 => 124673)
--- trunk/LayoutTests/fast/events/touch/gesture/gesture-dblclick.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/gesture/gesture-dblclick.html 2012-08-03 23:45:04 UTC (rev 124673)
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body _onload_="runTest();">
+<div id="gesture">
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+var expectedEvents = [
+ {type: 'mousemove', x: 10, y: 12, detail: 0 },
+ {type: 'mousedown', x: 10, y: 12, detail: 1 },
+ {type: 'mouseup', x: 10, y: 12, detail: 1 },
+ {type: 'click', x: 10, y: 12, detail: 1 },
+ {type: 'mousemove', x: 11, y: 12, detail: 0 },
+ {type: 'mousedown', x: 11, y: 12, detail: 2 },
+ {type: 'mouseup', x: 11, y: 12, detail: 2 },
+ {type: 'click', x: 11, y: 12, detail: 2 },
+ {type: 'dblclick', x: 11, y: 12, detail: 2 },
+ ];
+
+var mouseEventsReceived = 0;
+
+function gestureEventCallback(event)
+{
+ if (window.eventSender) {
+ shouldBeEqualToString('event.type', expectedEvents[mouseEventsReceived].type);
+ shouldEvaluateTo('event.clientX', expectedEvents[mouseEventsReceived].x);
+ shouldEvaluateTo('event.clientY', expectedEvents[mouseEventsReceived].y);
+ shouldEvaluateTo('event.detail', expectedEvents[mouseEventsReceived].detail);
+ mouseEventsReceived++;
+ } else {
+ debug(event.type);
+ debug(event.clientX);
+ debug(event.clientY);
+ debug(event.detail);
+ }
+}
+
+// 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 < expectedEvents.length) {
+ debug('Gesture manager not implemented on this platform.');
+ }
+ // Bail.
+ isSuccessfullyParsed();
+ testRunner.notifyDone();
+}
+
+function runTest() {
+ var div = document.getElementById('gesture');
+ div.addEventListener("mousedown", gestureEventCallback, false);
+ div.addEventListener("click", gestureEventCallback, false);
+ div.addEventListener("dblclick", gestureEventCallback, false);
+ div.addEventListener("mouseup", gestureEventCallback, false);
+ div.addEventListener("mousemove", gestureEventCallback, false);
+ document.addEventListener("keydown", quitKeyToEndTest, false);
+
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+
+ if (window.eventSender) {
+ description("This tests gesture callbacks for a double tap sequence of gestures.");
+ eventSender.gestureTap(10, 12);
+ eventSender.leapForward(10);
+ eventSender.gestureTap(11, 12, 2);
+ eventSender.leapForward(50);
+ eventSender.keyDown(' ');
+ } else {
+ debug("This test requires DumpRenderTree.")
+ }
+}
+</script>
+</body>
+</html>
Added: trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/gesture-dblclick-expected.txt (0 => 124673)
--- trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/gesture-dblclick-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/gesture-dblclick-expected.txt 2012-08-03 23:45:04 UTC (rev 124673)
@@ -0,0 +1,45 @@
+This tests gesture callbacks for a double tap sequence of gestures.
+
+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.detail is 0
+PASS event.type is "mousedown"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS event.detail is 1
+PASS event.type is "mouseup"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS event.detail is 1
+PASS event.type is "click"
+PASS event.clientX is 10
+PASS event.clientY is 12
+PASS event.detail is 1
+PASS event.type is "mousemove"
+PASS event.clientX is 11
+PASS event.clientY is 12
+PASS event.detail is 0
+PASS event.type is "mousedown"
+PASS event.clientX is 11
+PASS event.clientY is 12
+PASS event.detail is 2
+PASS event.type is "mouseup"
+PASS event.clientX is 11
+PASS event.clientY is 12
+PASS event.detail is 2
+PASS event.type is "click"
+PASS event.clientX is 11
+PASS event.clientY is 12
+PASS event.detail is 2
+PASS event.type is "dblclick"
+PASS event.clientX is 11
+PASS event.clientY is 12
+PASS event.detail is 2
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Modified: trunk/Source/WebCore/ChangeLog (124672 => 124673)
--- trunk/Source/WebCore/ChangeLog 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/Source/WebCore/ChangeLog 2012-08-03 23:45:04 UTC (rev 124673)
@@ -1,3 +1,22 @@
+2012-08-03 Rick Byers <[email protected]>
+
+ Double tap gesture should send dblclick event
+ https://bugs.webkit.org/show_bug.cgi?id=92412
+
+ Reviewed by Adam Barth.
+
+ Propagate the tap count from PlatformGestureEvent in the derived mouse
+ events.
+
+ Also fixes a crash with unexpected GestureDoubleTap events by just
+ supressing them early. They will probably be removed soon anyway.
+
+ Test: fast/events/touch/gesture/gesture-dblclick.html
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleGestureEvent):
+ (WebCore::EventHandler::handleGestureTap):
+
2012-08-03 Sheriff Bot <[email protected]>
Unreviewed, rolling out r124668.
Modified: trunk/Source/WebCore/page/EventHandler.cpp (124672 => 124673)
--- trunk/Source/WebCore/page/EventHandler.cpp 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2012-08-03 23:45:04 UTC (rev 124673)
@@ -2414,6 +2414,11 @@
bool EventHandler::handleGestureEvent(const PlatformGestureEvent& gestureEvent)
{
+ // We don't use DoubleTap at the moment, it's mostly redundant with tap since tap now contains
+ // a tap count. FIXME: We should probably remove GestureDoubleTap (http://wkb.ug/93045).
+ if (gestureEvent.type() == PlatformEvent::GestureDoubleTap)
+ return false;
+
Node* eventTarget = 0;
if (gestureEvent.type() == PlatformEvent::GestureScrollEnd || gestureEvent.type() == PlatformEvent::GestureScrollUpdate)
eventTarget = m_scrollGestureHandlingNode.get();
@@ -2474,13 +2479,28 @@
return false;
#endif
+ PlatformMouseEvent fakeMouseMove(adjustedPoint, gestureEvent.globalPosition(),
+ NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0,
+ gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), gestureEvent.timestamp());
+ mouseMoved(fakeMouseMove);
+
+ int tapCount = 1;
+ // FIXME: deletaX is overloaded to mean different things for different gestures.
+ // http://wkb.ug/93123
+ if (gestureEvent.deltaX() > 0)
+ tapCount = static_cast<int>(gestureEvent.deltaX());
+
bool defaultPrevented = false;
- PlatformMouseEvent fakeMouseMove(adjustedPoint, gestureEvent.globalPosition(), NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), gestureEvent.timestamp());
- PlatformMouseEvent fakeMouseDown(adjustedPoint, gestureEvent.globalPosition(), LeftButton, PlatformEvent::MousePressed, /* clickCount */ 1, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), gestureEvent.timestamp());
- PlatformMouseEvent fakeMouseUp(adjustedPoint, gestureEvent.globalPosition(), LeftButton, PlatformEvent::MouseReleased, /* clickCount */ 1, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), gestureEvent.timestamp());
- mouseMoved(fakeMouseMove);
+ PlatformMouseEvent fakeMouseDown(adjustedPoint, gestureEvent.globalPosition(),
+ LeftButton, PlatformEvent::MousePressed, tapCount,
+ gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), gestureEvent.timestamp());
defaultPrevented |= handleMousePressEvent(fakeMouseDown);
+
+ PlatformMouseEvent fakeMouseUp(adjustedPoint, gestureEvent.globalPosition(),
+ LeftButton, PlatformEvent::MouseReleased, tapCount,
+ gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), gestureEvent.timestamp());
defaultPrevented |= handleMouseReleaseEvent(fakeMouseUp);
+
return defaultPrevented;
}
Modified: trunk/Source/WebKit/chromium/ChangeLog (124672 => 124673)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-08-03 23:45:04 UTC (rev 124673)
@@ -1,3 +1,16 @@
+2012-08-03 Rick Byers <[email protected]>
+
+ Double tap gesture should send dblclick event
+ https://bugs.webkit.org/show_bug.cgi?id=92412
+
+ Reviewed by Adam Barth.
+
+ Tweak comment to more completely describe the (lame) overloaded use
+ of deltaX in WebGestureEvent, and add a FIXME with the bug to track
+ cleaning it up.
+ * public/WebInputEvent.h:
+ (WebGestureEvent):
+
2012-08-03 Dave Tu <[email protected]>
[chromium] Remove assert when getting hardware renderingStats in software mode.
Modified: trunk/Source/WebKit/chromium/public/WebInputEvent.h (124672 => 124673)
--- trunk/Source/WebKit/chromium/public/WebInputEvent.h 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/Source/WebKit/chromium/public/WebInputEvent.h 2012-08-03 23:45:04 UTC (rev 124673)
@@ -370,7 +370,11 @@
int globalX;
int globalY;
- // NOTE: |deltaX| and |deltaY| represents the amount to scroll for Scroll gesture events. For Pinch gesture events, |deltaX| represents the scaling/magnification factor.
+ // NOTE: |deltaX| and |deltaY| represents the amount to scroll for Scroll gesture events.
+ // For Pinch gesture events, |deltaX| represents the scaling/magnification factor.
+ // For a GestureTap event, |deltaX| represents the tap count.
+ // For a FlingStart event, |deltaX| and |deltaY| represent the velocity.
+ // FIXME: Avoid overloading 'delta' in this way. http://wkb.ug/93123
float deltaX;
float deltaY;
WebRect boundingBox;
Modified: trunk/Tools/ChangeLog (124672 => 124673)
--- trunk/Tools/ChangeLog 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/Tools/ChangeLog 2012-08-03 23:45:04 UTC (rev 124673)
@@ -1,3 +1,17 @@
+2012-08-03 Rick Byers <[email protected]>
+
+ Double tap gesture should send dblclick event
+ https://bugs.webkit.org/show_bug.cgi?id=92412
+
+ Reviewed by Adam Barth.
+
+ Enable EventSender to set the tap count on tap gesture events. The
+ delta X/Y parameters were not actually being used anymore (used to be
+ used for radius information).
+
+ * DumpRenderTree/chromium/TestRunner/EventSender.cpp:
+ (EventSender::gestureEvent):
+
2012-08-03 Ryosuke Niwa <[email protected]>
run-perf-tests should generate JSON output and results page by default
Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/EventSender.cpp (124672 => 124673)
--- trunk/Tools/DumpRenderTree/chromium/TestRunner/EventSender.cpp 2012-08-03 23:39:16 UTC (rev 124672)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/EventSender.cpp 2012-08-03 23:45:04 UTC (rev 124673)
@@ -1166,9 +1166,9 @@
event.y = m_currentGestureLocation.y;
break;
case WebInputEvent::GestureTap:
- if (arguments.size() >= 4) {
+ if (arguments.size() >= 3) {
+ // Tap count.
event.deltaX = static_cast<float>(arguments[2].toDouble());
- event.deltaY = static_cast<float>(arguments[3].toDouble());
}
event.x = point.x;
event.y = point.y;