Skip to content
  • eric@webkit.org's avatar
    2009-09-09 Jens Alfke <snej@chromium.org> · 99e6cded
    eric@webkit.org authored
            Reviewed by Eric Seidel.
    
            Initialize DataTransfer's effectAllowed and dropEffect properties correctly
            according to HTML5 spec (sec. 7.9.2-7.9.3).
            https://bugs.webkit.org/show_bug.cgi?id=26700
    
            * fast/events/drag-dropeffect-expected.txt: Added.
            * fast/events/drag-dropeffect.html: Added.
    2009-09-09  Jens Alfke  <snej@chromium.org>
    
            Reviewed by Eric Seidel.
    
            Initialize DataTransfer's effectAllowed and dropEffect properties correctly
            according to HTML5 spec (sec. 7.9.2-7.9.3).
            https://bugs.webkit.org/show_bug.cgi?id=26700
            - At the start of a drag operation, the value of effectAllowed should be
              the string "uninitialized".
            - At end of dragstart handler, if effectAllowed hasn't been set yet, it
              should be set to "copy".
            - on dragenter and dragover event, dropEffect should be initialized to a
              default value based on the value of effectAllowed.
            - at end of dragenter and dragover the dropEffect should be set to "none"
              if the value set by the handler doesn't match the effectAllowed.
            - on dragleave event, dropEffect should be "none".
            - on drop event, dropEffect should be the previously negotiated value.
    
            Test: fast/events/drag-dropeffect.html
    
            * WebCore.base.exp:
                Added a parameter to EventHandler::dragSourceMovedTo.
            * dom/Clipboard.cpp:
            (WebCore::Clipboard::Clipboard):
                Initialize m_effectAllowed to "uninitialized".
            (WebCore::Clipboard::sourceOperation):
                Treat "uninitialized" as meaning no value has been set.
            * page/DragController.cpp:
            (WebCore::DragController::DragController):
                Initialize new member m_destinationDragOperation.
            (WebCore::DragController::dragExited):
                Set m_destinationDragOperation to none on dragExit.
            (WebCore::DragController::performDrag):
                Set m_destinationDragOperation to current dropEffect.
            (WebCore::DragController::dragEnteredOrUpdated):
                Make sure to clear the operation if drag source doesn't allow it.
            (WebCore::DragController::tryDHTMLDrag):
                Set a default value for the dst drag op before sending dragEnter/Over.
            (WebCore::DragController::startDrag):
                Clear m_destinationDragOperation at start of drag.
            * page/DragController.h:
            (WebCore::DragController::destinationDragOperation):
                Added new member m_destinationDragOperation, and its public getter.
            * page/EventHandler.cpp:
            (WebCore::EventHandler::updateDragAndDrop):
                dropEffect should be 'none' during dropleave handler, per spec.
            (WebCore::EventHandler::dragSourceMovedTo):
                Added DragOperation parameter, so the handler sees the current dropEffect.
            (WebCore::EventHandler::handleDrag):
                Assume DragOperationEvery for non-DHTML drags.
            * page/EventHandler.h:
                Added DragOperation parameter to dragSourceMovedTo().
    2009-09-09  Jens Alfke  <snej@chromium.org>
    
            Reviewed by Eric Seidel.
    
            Initialize DataTransfer's effectAllowed and dropEffect properties correctly
            according to HTML5 spec (sec. 7.9.2-7.9.3).
            https://bugs.webkit.org/show_bug.cgi?id=26700
    
            * WebView/WebFrame.mm:
            (-[WebFrame _dragSourceMovedTo:]):
                Pass current drag operation (if known) to EventHandler::dragSourceMovedTo().
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@48229 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    99e6cded