Skip to content
  • commit-queue@webkit.org's avatar
    LongPress and LongTap gestures should start drag/drop and open context menu respectively. · adf39aa9
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=101545
    
    Patch by Varun Jain <varunjain@chromium.org> on 2012-11-26
    Reviewed by Antonio Gomes.
    
    For LongPress, we simulate drag by sending a mouse down and mouse drag
    events. If a drag is not started (because maybe there is no draggable
    element), then we show context menu instead (which is the current
    behavior for LongPress). For LongTap, we use the existing functions that
    LongPress uses to summon the context menu. LongPress initiated drag and
    drop can be enabled/disabled by the platform using the Setting
    touchDragDropEnabled which is disabled by default.
    
    Source/WebCore:
    
    Tests: fast/events/touch/gesture/context-menu-on-long-tap.html
           fast/events/touch/gesture/long-press-on-draggable-element-triggers-drag.html
    
    * page/EventHandler.cpp:
    (WebCore::EventHandler::EventHandler):
    (WebCore::EventHandler::clear):
    (WebCore::EventHandler::handleMouseDraggedEvent):
    (WebCore::EventHandler::handleGestureEvent):
    (WebCore::EventHandler::handleGestureLongPress):
    (WebCore::EventHandler::handleGestureLongTap):
    (WebCore):
    (WebCore::EventHandler::handleGestureForTextSelectionOrContextMenu):
    (WebCore::EventHandler::adjustGesturePosition):
    (WebCore::EventHandler::handleDrag):
    * page/EventHandler.h:
    (EventHandler):
    * page/Settings.in:
    
    Source/WebKit/chromium:
    
    * public/WebSettings.h:
    * src/WebSettingsImpl.cpp:
    (WebKit::WebSettingsImpl::setTouchDragDropEnabled):
    (WebKit):
    * src/WebSettingsImpl.h:
    (WebSettingsImpl):
    
    Tools:
    
    * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
    (WebTestRunner):
    (WebTestRunner::EventSender::EventSender):
    (WebTestRunner::EventSender::gestureLongTap):
    (WebTestRunner::EventSender::gestureEvent):
    * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
    (EventSender):
    * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
    (WebTestRunner::TestRunner::TestRunner):
    (WebTestRunner::TestRunner::setTouchDragDropEnabled):
    (WebTestRunner):
    * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
    (TestRunner):
    
    LayoutTests:
    
    * fast/events/touch/gesture/context-menu-on-long-tap.html: Added.
    * fast/events/touch/gesture/long-press-on-draggable-element-triggers-drag.html: Added.
    * platform/chromium/fast/events/touch/gesture/context-menu-on-long-tap-expected.txt: Added.
    * platform/chromium/fast/events/touch/gesture/long-press-on-draggable-element-triggers-drag-expected.txt: Added.
    * touchadjustment/touch-links-longpress-expected.txt:
    * touchadjustment/touch-links-longpress.html:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@135789 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    adf39aa9