#pragma once
#include "MouseEvent.h"
#include "MouseEventInit.h"
namespace WebCore {
class DataTransfer;
struct DragEventInit : public MouseEventInit {
RefPtr<DataTransfer> dataTransfer;
};
class DragEvent : public MouseEvent {
WTF_MAKE_ISO_ALLOCATED(DragEvent);
public:
using Init = DragEventInit;
static Ref<DragEvent> create(const AtomString& eventType, DragEventInit&&);
static Ref<DragEvent> createForBindings();
static Ref<DragEvent> create(const AtomString& type, CanBubble, IsCancelable, IsComposed, MonotonicTime timestamp, RefPtr<WindowProxy>&&, int detail,
const IntPoint& screenLocation, const IntPoint& windowLocation, const IntPoint& movementDelta, OptionSet<Modifier>, short button, unsigned short buttons,
EventTarget* relatedTarget, double force, unsigned short syntheticClickType, DataTransfer* = nullptr, IsSimulated = IsSimulated::No, IsTrusted = IsTrusted::Yes);
DataTransfer* dataTransfer() const { return m_dataTransfer.get(); }
private:
DragEvent(const AtomString& eventType, DragEventInit&&);
DragEvent(const AtomString& type, CanBubble, IsCancelable, IsComposed, MonotonicTime timestamp, RefPtr<WindowProxy>&&, int detail,
const IntPoint& screenLocation, const IntPoint& windowLocation, const IntPoint& movementDelta, OptionSet<Modifier>, short button, unsigned short buttons,
EventTarget* relatedTarget, double force, unsigned short syntheticClickType, DataTransfer*, IsSimulated, IsTrusted);
DragEvent();
EventInterface eventInterface() const final;
RefPtr<DataTransfer> m_dataTransfer;
};
}