Diff
Modified: trunk/LayoutTests/ChangeLog (116670 => 116671)
--- trunk/LayoutTests/ChangeLog 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/LayoutTests/ChangeLog 2012-05-10 18:42:54 UTC (rev 116671)
@@ -1,3 +1,13 @@
+2012-05-10 Varun Jain <[email protected]>
+
+ [chromium] Trigger context menu for long press gesture
+ https://bugs.webkit.org/show_bug.cgi?id=85919
+
+ Reviewed by Adam Barth.
+
+ * fast/events/touch/gesture/context-menu-on-long-press.html: Added.
+ * platform/chromium/fast/events/touch/gesture/context-menu-on-long-press-expected.txt: Added.
+
2012-05-10 Abhishek Arya <[email protected]>
Crash in ApplyStyleCommand::joinChildTextNodes.
Added: trunk/LayoutTests/fast/events/touch/gesture/context-menu-on-long-press.html (0 => 116671)
--- trunk/LayoutTests/fast/events/touch/gesture/context-menu-on-long-press.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/gesture/context-menu-on-long-press.html 2012-05-10 18:42:54 UTC (rev 116671)
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body _onload_="test()">
+<p>This test checks that the context menu is shown on long press gesture.</p>
+<div id="text">Testing</div>
+<div id="result">FAIL</div>
+<script>
+function test()
+{
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ document._oncontextmenu_ = function() { document.getElementById("result").innerHTML = "PASS"; }
+
+ var text = document.getElementById("text");
+
+ var x = text.offsetParent.offsetLeft + text.offsetLeft + 4;
+ var y = text.offsetParent.offsetTop + text.offsetTop + text.offsetHeight / 2;
+
+ if (!window.eventSender)
+ return;
+ if (eventSender.gestureLongPress) {
+ eventSender.gestureLongPress(x, y);
+ } else {
+ debug("gestureLongPress not implemented by this platform");
+ return;
+ }
+}
+</script>
+</body>
+</html>
Added: trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/context-menu-on-long-press-expected.txt (0 => 116671)
--- trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/context-menu-on-long-press-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/context-menu-on-long-press-expected.txt 2012-05-10 18:42:54 UTC (rev 116671)
@@ -0,0 +1,4 @@
+This test checks that the context menu is shown on long press gesture.
+
+Testing
+PASS
Modified: trunk/Source/WebCore/ChangeLog (116670 => 116671)
--- trunk/Source/WebCore/ChangeLog 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Source/WebCore/ChangeLog 2012-05-10 18:42:54 UTC (rev 116671)
@@ -1,3 +1,18 @@
+2012-05-10 Varun Jain <[email protected]>
+
+ [chromium] Trigger context menu for long press gesture
+ https://bugs.webkit.org/show_bug.cgi?id=85919
+
+ Reviewed by Adam Barth.
+
+ Test: fast/events/touch/gesture/context-menu-on-long-press.html
+
+ * page/EventHandler.cpp:
+ (WebCore):
+ (WebCore::EventHandler::sendContextMenuEventForGesture):
+ * page/EventHandler.h:
+ (EventHandler):
+
2012-05-10 Abhishek Arya <[email protected]>
Crash in ApplyStyleCommand::joinChildTextNodes.
Modified: trunk/Source/WebCore/page/EventHandler.cpp (116670 => 116671)
--- trunk/Source/WebCore/page/EventHandler.cpp 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2012-05-10 18:42:54 UTC (rev 116671)
@@ -2599,6 +2599,18 @@
return dispatchMouseEvent(eventNames().contextmenuEvent, targetNode, true, 0, mouseEvent, false);
}
+#if ENABLE(GESTURE_EVENTS)
+bool EventHandler::sendContextMenuEventForGesture(const PlatformGestureEvent& event)
+{
+#if OS(WINDOWS)
+ PlatformEvent::Type eventType = PlatformEvent::MouseReleased;
+#else
+ PlatformEvent::Type eventType = PlatformEvent::MousePressed;
+#endif
+ PlatformMouseEvent mouseEvent(event.position(), event.globalPosition(), RightButton, eventType, 1, false, false, false, false, WTF::currentTime());
+ return sendContextMenuEvent(mouseEvent);
+}
+#endif // ENABLE(GESTURE_EVENTS)
#endif // ENABLE(CONTEXT_MENUS)
void EventHandler::scheduleHoverStateUpdate()
Modified: trunk/Source/WebCore/page/EventHandler.h (116670 => 116671)
--- trunk/Source/WebCore/page/EventHandler.h 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Source/WebCore/page/EventHandler.h 2012-05-10 18:42:54 UTC (rev 116671)
@@ -175,7 +175,10 @@
#if ENABLE(CONTEXT_MENUS)
bool sendContextMenuEvent(const PlatformMouseEvent&);
bool sendContextMenuEventForKey();
+#if ENABLE(GESTURE_EVENTS)
+ bool sendContextMenuEventForGesture(const PlatformGestureEvent&);
#endif
+#endif
void setMouseDownMayStartAutoscroll() { m_mouseDownMayStartAutoscroll = true; }
Modified: trunk/Source/WebKit/chromium/ChangeLog (116670 => 116671)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-05-10 18:42:54 UTC (rev 116671)
@@ -1,3 +1,15 @@
+2012-05-10 Varun Jain <[email protected]>
+
+ [chromium] Trigger context menu for long press gesture
+ https://bugs.webkit.org/show_bug.cgi?id=85919
+
+ Reviewed by Adam Barth.
+
+ * src/PageWidgetDelegate.cpp:
+ (WebKit::PageWidgetDelegate::handleInputEvent):
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::handleGestureEvent):
+
2012-05-10 Mark Pilgrim <[email protected]>
[Chromium] Remove dead code behind unused WEBKIT_USING_CG
Modified: trunk/Source/WebKit/chromium/src/PageWidgetDelegate.cpp (116670 => 116671)
--- trunk/Source/WebKit/chromium/src/PageWidgetDelegate.cpp 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Source/WebKit/chromium/src/PageWidgetDelegate.cpp 2012-05-10 18:42:54 UTC (rev 116671)
@@ -153,6 +153,7 @@
case WebInputEvent::GestureTap:
case WebInputEvent::GestureTapDown:
case WebInputEvent::GestureDoubleTap:
+ case WebInputEvent::GestureLongPress:
return handler.handleGestureEvent(*static_cast<const WebGestureEvent*>(&event));
#endif
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (116670 => 116671)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2012-05-10 18:42:54 UTC (rev 116671)
@@ -658,12 +658,22 @@
}
return gestureHandled;
}
+ case WebInputEvent::GestureLongPress: {
+ if (!mainFrameImpl() || !mainFrameImpl()->frameView())
+ return false;
+
+ m_page->contextMenuController()->clearContextMenu();
+ m_contextMenuAllowed = true;
+ PlatformGestureEventBuilder platformEvent(mainFrameImpl()->frameView(), event);
+ bool handled = mainFrameImpl()->frame()->eventHandler()->sendContextMenuEventForGesture(platformEvent);
+ m_contextMenuAllowed = false;
+ return handled;
+ }
case WebInputEvent::GestureScrollBegin:
case WebInputEvent::GestureScrollEnd:
case WebInputEvent::GestureScrollUpdate:
case WebInputEvent::GestureTapDown:
case WebInputEvent::GestureDoubleTap:
- case WebInputEvent::GestureLongPress:
case WebInputEvent::GesturePinchBegin:
case WebInputEvent::GesturePinchEnd:
case WebInputEvent::GesturePinchUpdate: {
Modified: trunk/Tools/ChangeLog (116670 => 116671)
--- trunk/Tools/ChangeLog 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Tools/ChangeLog 2012-05-10 18:42:54 UTC (rev 116671)
@@ -1,3 +1,17 @@
+2012-05-10 Varun Jain <[email protected]>
+
+ [chromium] Trigger context menu for long press gesture
+ https://bugs.webkit.org/show_bug.cgi?id=85919
+
+ Reviewed by Adam Barth.
+
+ * DumpRenderTree/chromium/EventSender.cpp:
+ (EventSender::EventSender):
+ (EventSender::gestureLongPress):
+ (EventSender::gestureEvent):
+ * DumpRenderTree/chromium/EventSender.h:
+ (EventSender):
+
2012-05-10 Takashi Toyoshima <[email protected]>
don't use autoinstall to import pywebsocket but check it in WebKit directly.
Modified: trunk/Tools/DumpRenderTree/chromium/EventSender.cpp (116670 => 116671)
--- trunk/Tools/DumpRenderTree/chromium/EventSender.cpp 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Tools/DumpRenderTree/chromium/EventSender.cpp 2012-05-10 18:42:54 UTC (rev 116671)
@@ -286,6 +286,7 @@
bindMethod("gestureScrollFirstPoint", &EventSender::gestureScrollFirstPoint);
bindMethod("gestureScrollUpdate", &EventSender::gestureScrollUpdate);
bindMethod("gestureTap", &EventSender::gestureTap);
+ bindMethod("gestureLongPress", &EventSender::gestureLongPress);
bindMethod("zoomPageIn", &EventSender::zoomPageIn);
bindMethod("zoomPageOut", &EventSender::zoomPageOut);
bindMethod("scalePageBy", &EventSender::scalePageBy);
@@ -1092,6 +1093,12 @@
gestureEvent(WebInputEvent::GestureTap, arguments);
}
+void EventSender::gestureLongPress(const CppArgumentList& arguments, CppVariant* result)
+{
+ result->setNull();
+ gestureEvent(WebInputEvent::GestureLongPress, arguments);
+}
+
void EventSender::gestureScrollFirstPoint(const CppArgumentList& arguments, CppVariant* result)
{
result->setNull();
@@ -1141,6 +1148,10 @@
event.x = point.x;
event.y = point.y;
break;
+ case WebInputEvent::GestureLongPress:
+ event.x = point.x;
+ event.y = point.y;
+ break;
default:
ASSERT_NOT_REACHED();
}
Modified: trunk/Tools/DumpRenderTree/chromium/EventSender.h (116670 => 116671)
--- trunk/Tools/DumpRenderTree/chromium/EventSender.h 2012-05-10 18:40:29 UTC (rev 116670)
+++ trunk/Tools/DumpRenderTree/chromium/EventSender.h 2012-05-10 18:42:54 UTC (rev 116671)
@@ -104,6 +104,7 @@
void gestureScrollFirstPoint(const CppArgumentList&, CppVariant*);
void gestureScrollUpdate(const CppArgumentList&, CppVariant*);
void gestureTap(const CppArgumentList&, CppVariant*);
+ void gestureLongPress(const CppArgumentList&, CppVariant*);
void gestureEvent(WebKit::WebInputEvent::Type, const CppArgumentList&);
// Unimplemented stubs