Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / page / DragController.h
index f109837..2e633e5 100644 (file)
 
 #include "core/page/DragActions.h"
 #include "platform/geometry/IntPoint.h"
+#include "platform/heap/Handle.h"
 #include "platform/weborigin/KURL.h"
 #include "wtf/Forward.h"
 
-namespace WebCore {
-
-    class Clipboard;
-    class Document;
-    class DragClient;
-    class DragData;
-    class DragImage;
-    struct DragSession;
-    struct DragState;
-    class Element;
-    class Frame;
-    class FrameSelection;
-    class HTMLInputElement;
-    class Image;
-    class IntRect;
-    class Node;
-    class Page;
-    class PlatformMouseEvent;
-    class Range;
-
-    class DragController {
-        WTF_MAKE_NONCOPYABLE(DragController); WTF_MAKE_FAST_ALLOCATED;
-    public:
-        ~DragController();
-
-        static PassOwnPtr<DragController> create(Page*, DragClient*);
-
-        DragSession dragEntered(DragData*);
-        void dragExited(DragData*);
-        DragSession dragUpdated(DragData*);
-        bool performDrag(DragData*);
-
-        enum SelectionDragPolicy {
-            ImmediateSelectionDragResolution,
-            DelayedSelectionDragResolution,
-        };
-        Node* draggableNode(const Frame*, Node*, const IntPoint&, SelectionDragPolicy, DragSourceAction&) const;
-        void dragEnded();
-
-        bool populateDragClipboard(Frame* src, const DragState&, const IntPoint& dragOrigin);
-        bool startDrag(Frame* src, const DragState&, const PlatformMouseEvent& dragEvent, const IntPoint& dragOrigin);
-
-        static const int DragIconRightInset;
-        static const int DragIconBottomInset;
-
-    private:
-        DragController(Page*, DragClient*);
-
-        bool dispatchTextInputEventFor(Frame*, DragData*);
-        bool canProcessDrag(DragData*);
-        bool concludeEditDrag(DragData*);
-        DragSession dragEnteredOrUpdated(DragData*);
-        DragOperation operationForLoad(DragData*);
-        bool tryDocumentDrag(DragData*, DragDestinationAction, DragSession&);
-        bool tryDHTMLDrag(DragData*, DragOperation&);
-        DragOperation dragOperation(DragData*);
-        void cancelDrag();
-        bool dragIsMove(FrameSelection&, DragData*);
-        bool isCopyKeyDown(DragData*);
-
-        void mouseMovedIntoDocument(Document*);
-
-        void doSystemDrag(DragImage*, const IntPoint& dragLocation, const IntPoint& dragOrigin, Clipboard*, Frame*, bool forLink);
-        void cleanupAfterSystemDrag();
-
-        Page* m_page;
-        DragClient* m_client;
-
-        RefPtr<Document> m_documentUnderMouse; // The document the mouse was last dragged over.
-        RefPtr<Document> m_dragInitiator; // The Document (if any) that initiated the drag.
-        RefPtr<HTMLInputElement> m_fileInputElementUnderMouse;
-        bool m_documentIsHandlingDrag;
-
-        DragDestinationAction m_dragDestinationAction;
-        bool m_didInitiateDrag;
+namespace blink {
+
+class DataTransfer;
+class Document;
+class DragClient;
+class DragData;
+class DragImage;
+struct DragSession;
+class DragState;
+class LocalFrame;
+class FrameSelection;
+class HTMLInputElement;
+class Node;
+class Page;
+class PlatformMouseEvent;
+
+class DragController final : public NoBaseWillBeGarbageCollectedFinalized<DragController> {
+    WTF_MAKE_NONCOPYABLE(DragController);
+    WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
+public:
+    ~DragController();
+
+    static PassOwnPtrWillBeRawPtr<DragController> create(Page*, DragClient*);
+
+    DragSession dragEntered(DragData*);
+    void dragExited(DragData*);
+    DragSession dragUpdated(DragData*);
+    bool performDrag(DragData*);
+
+    enum SelectionDragPolicy {
+        ImmediateSelectionDragResolution,
+        DelayedSelectionDragResolution,
     };
+    Node* draggableNode(const LocalFrame*, Node*, const IntPoint&, SelectionDragPolicy, DragSourceAction&) const;
+    void dragEnded();
 
-}
+    bool populateDragDataTransfer(LocalFrame* src, const DragState&, const IntPoint& dragOrigin);
+    bool startDrag(LocalFrame* src, const DragState&, const PlatformMouseEvent& dragEvent, const IntPoint& dragOrigin);
 
-#endif
+    void trace(Visitor*);
+
+    static const int DragIconRightInset;
+    static const int DragIconBottomInset;
+
+private:
+    DragController(Page*, DragClient*);
+
+    bool dispatchTextInputEventFor(LocalFrame*, DragData*);
+    bool canProcessDrag(DragData*);
+    bool concludeEditDrag(DragData*);
+    DragSession dragEnteredOrUpdated(DragData*);
+    DragOperation operationForLoad(DragData*);
+    bool tryDocumentDrag(DragData*, DragDestinationAction, DragSession&);
+    bool tryDHTMLDrag(DragData*, DragOperation&);
+    DragOperation dragOperation(DragData*);
+    void cancelDrag();
+    bool dragIsMove(FrameSelection&, DragData*);
+    bool isCopyKeyDown(DragData*);
+
+    void mouseMovedIntoDocument(Document*);
+
+    void doSystemDrag(DragImage*, const IntPoint& dragLocation, const IntPoint& dragOrigin, DataTransfer*, LocalFrame*, bool forLink);
+    void cleanupAfterSystemDrag();
+
+    RawPtrWillBeMember<Page> m_page;
+    DragClient* m_client;
+
+    RefPtrWillBeMember<Document> m_documentUnderMouse; // The document the mouse was last dragged over.
+    RefPtrWillBeMember<Document> m_dragInitiator; // The Document (if any) that initiated the drag.
+    RefPtrWillBeMember<HTMLInputElement> m_fileInputElementUnderMouse;
+    bool m_documentIsHandlingDrag;
+
+    DragDestinationAction m_dragDestinationAction;
+    bool m_didInitiateDrag;
+};
+
+} // namespace blink
+
+#endif // DragController_h