summaryrefslogtreecommitdiff
path: root/Source/WebCore/dom/MouseEvent.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/dom/MouseEvent.h')
-rw-r--r--Source/WebCore/dom/MouseEvent.h125
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)