diff options
Diffstat (limited to 'Source/WebCore/dom/MouseEvent.h')
-rw-r--r-- | Source/WebCore/dom/MouseEvent.h | 125 |
1 files changed, 42 insertions, 83 deletions
diff --git a/Source/WebCore/dom/MouseEvent.h b/Source/WebCore/dom/MouseEvent.h index 3b550cb8c..3730ca430 100644 --- a/Source/WebCore/dom/MouseEvent.h +++ b/Source/WebCore/dom/MouseEvent.h @@ -2,7 +2,7 @@ * Copyright (C) 2001 Peter Kelly (pmk@post.com) * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) - * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2013 Apple Inc. All rights reserved. + * Copyright (C) 2003-2016 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -21,128 +21,87 @@ * */ -#ifndef MouseEvent_h -#define MouseEvent_h +#pragma once +#include "MouseEventInit.h" #include "MouseRelatedEvent.h" namespace WebCore { -class Clipboard; +class DataTransfer; class PlatformMouseEvent; -struct MouseEventInit : public UIEventInit { - MouseEventInit(); - - int screenX; - int screenY; - int clientX; - int clientY; - bool ctrlKey; - bool altKey; - bool shiftKey; - bool metaKey; - unsigned short button; - RefPtr<EventTarget> relatedTarget; -}; - class MouseEvent : public MouseRelatedEvent { public: - static PassRefPtr<MouseEvent> create() - { - return adoptRef(new MouseEvent); - } - - static PassRefPtr<MouseEvent> create(const AtomicString& type, bool canBubble, bool cancelable, double timestamp, PassRefPtr<AbstractView>, - int detail, int screenX, int screenY, int pageX, int pageY, + WEBCORE_EXPORT static Ref<MouseEvent> create(const AtomicString& type, bool canBubble, bool cancelable, double timestamp, DOMWindow*, int detail, int screenX, int screenY, int pageX, int pageY, #if ENABLE(POINTER_LOCK) int movementX, int movementY, #endif - bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, - PassRefPtr<EventTarget> relatedTarget); + bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, EventTarget* relatedTarget, double force, unsigned short syntheticClickType, DataTransfer* = nullptr, bool isSimulated = false); - static PassRefPtr<MouseEvent> create(const AtomicString& type, bool canBubble, bool cancelable, double timestamp, PassRefPtr<AbstractView>, - int detail, int screenX, int screenY, int pageX, int pageY, -#if ENABLE(POINTER_LOCK) - int movementX, int movementY, -#endif - bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, - PassRefPtr<EventTarget> relatedTarget, PassRefPtr<Clipboard>, bool isSimulated = false); + WEBCORE_EXPORT static Ref<MouseEvent> create(const AtomicString& eventType, DOMWindow*, const PlatformMouseEvent&, int detail, Node* relatedTarget); + + static Ref<MouseEvent> create(const AtomicString& eventType, bool canBubble, bool cancelable, DOMWindow*, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, unsigned short syntheticClickType, EventTarget* relatedTarget); - static PassRefPtr<MouseEvent> create(const AtomicString& eventType, PassRefPtr<AbstractView>, const PlatformMouseEvent&, int detail, PassRefPtr<Node> relatedTarget); + static Ref<MouseEvent> createForBindings() { return adoptRef(*new MouseEvent); } - static PassRefPtr<MouseEvent> create(const AtomicString& eventType, const MouseEventInit&); + static Ref<MouseEvent> create(const AtomicString& eventType, const MouseEventInit&, IsTrusted = IsTrusted::No); virtual ~MouseEvent(); - void initMouseEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>, - int detail, int screenX, int screenY, int clientX, int clientY, - bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, - unsigned short button, PassRefPtr<EventTarget> relatedTarget); + WEBCORE_EXPORT void initMouseEvent(const AtomicString& type, bool canBubble, bool cancelable, DOMWindow*, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, EventTarget* relatedTarget); // WinIE uses 1,4,2 for left/middle/right but not for click (just for mousedown/up, maybe others), // but we will match the standard DOM. unsigned short button() const { return m_button; } + unsigned short syntheticClickType() const { return m_syntheticClickType; } bool buttonDown() const { return m_buttonDown; } - virtual EventTarget* relatedTarget() const override final { return m_relatedTarget.get(); } - void setRelatedTarget(PassRefPtr<EventTarget> relatedTarget) { m_relatedTarget = relatedTarget; } - - Clipboard* clipboard() const override { return m_clipboard.get(); } + EventTarget* relatedTarget() const final { return m_relatedTarget.get(); } + void setRelatedTarget(EventTarget* relatedTarget) { m_relatedTarget = relatedTarget; } + double force() const { return m_force; } + void setForce(double force) { m_force = force; } - Node* toElement() const; - Node* fromElement() const; + WEBCORE_EXPORT Node* toElement() const; + WEBCORE_EXPORT Node* fromElement() const; - Clipboard* dataTransfer() const { return isDragEvent() ? m_clipboard.get() : 0; } + DataTransfer* dataTransfer() const { return isDragEvent() ? m_dataTransfer.get() : nullptr; } - virtual EventInterface eventInterface() const override; + static bool canTriggerActivationBehavior(const Event&); - virtual bool isMouseEvent() const override; - virtual bool isDragEvent() const override; - virtual int which() const override; - - virtual PassRefPtr<Event> cloneFor(HTMLIFrameElement*) const override; + int which() const final; protected: - MouseEvent(const AtomicString& type, bool canBubble, bool cancelable, double timestamp, PassRefPtr<AbstractView>, - int detail, int screenX, int screenY, int pageX, int pageY, + MouseEvent(const AtomicString& type, bool canBubble, bool cancelable, double timestamp, DOMWindow*, + int detail, const IntPoint& screenLocation, const IntPoint& windowLocation, #if ENABLE(POINTER_LOCK) - int movementX, int movementY, + const IntPoint& movementDelta, #endif bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, - PassRefPtr<EventTarget> relatedTarget, PassRefPtr<Clipboard>, bool isSimulated); + EventTarget* relatedTarget, double force, unsigned short syntheticClickType, DataTransfer*, bool isSimulated); + + MouseEvent(const AtomicString& type, bool canBubble, bool cancelable, DOMWindow*, + int detail, const IntPoint& screenLocation, const IntPoint& clientLocation, + bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, + unsigned short button, unsigned short syntheticClickType, EventTarget* relatedTarget); - MouseEvent(const AtomicString& type, const MouseEventInit&); + MouseEvent(const AtomicString& type, const MouseEventInit&, IsTrusted); MouseEvent(); private: - unsigned short m_button; - bool m_buttonDown; - RefPtr<EventTarget> m_relatedTarget; - RefPtr<Clipboard> m_clipboard; -}; + bool isMouseEvent() const final; + EventInterface eventInterface() const override; -class SimulatedMouseEvent : public MouseEvent { -public: - static PassRefPtr<SimulatedMouseEvent> create(const AtomicString& eventType, PassRefPtr<AbstractView>, PassRefPtr<Event> underlyingEvent, Element* target); - virtual ~SimulatedMouseEvent(); + bool isDragEvent() const; -private: - SimulatedMouseEvent(const AtomicString& eventType, PassRefPtr<AbstractView>, PassRefPtr<Event> underlyingEvent, Element* target); + unsigned short m_button { 0 }; + unsigned short m_syntheticClickType { 0 }; + bool m_buttonDown { false }; + RefPtr<EventTarget> m_relatedTarget; + double m_force { 0 }; + RefPtr<DataTransfer> m_dataTransfer; }; -inline MouseEvent* toMouseEvent(Event* event) -{ - ASSERT_WITH_SECURITY_IMPLICATION(event && event->isMouseEvent()); - return static_cast<MouseEvent*>(event); -} - -inline MouseEvent& toMouseEvent(Event& event) -{ - ASSERT(event.isMouseEvent()); - return static_cast<MouseEvent&>(event); -} - } // namespace WebCore -#endif // MouseEvent_h +SPECIALIZE_TYPE_TRAITS_EVENT(MouseEvent) |