| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | |
| 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) | |
| 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserv
ed. | |
| 6 * | |
| 7 * This library is free software; you can redistribute it and/or | |
| 8 * modify it under the terms of the GNU Library General Public | |
| 9 * License as published by the Free Software Foundation; either | |
| 10 * version 2 of the License, or (at your option) any later version. | |
| 11 * | |
| 12 * This library is distributed in the hope that it will be useful, | |
| 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 15 * Library General Public License for more details. | |
| 16 * | |
| 17 * You should have received a copy of the GNU Library General Public License | |
| 18 * along with this library; see the file COPYING.LIB. If not, write to | |
| 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
| 20 * Boston, MA 02110-1301, USA. | |
| 21 * | |
| 22 */ | |
| 23 | |
| 24 #ifndef Event_h | |
| 25 #define Event_h | |
| 26 | |
| 27 #include "bindings/v8/ScriptWrappable.h" | |
| 28 #include "core/dom/DOMTimeStamp.h" | |
| 29 #include "core/events/EventContext.h" | |
| 30 #include "wtf/RefCounted.h" | |
| 31 #include "wtf/text/AtomicString.h" | |
| 32 | |
| 33 namespace WebCore { | |
| 34 | |
| 35 class Clipboard; | |
| 36 class EventTarget; | |
| 37 class EventDispatcher; | |
| 38 class HTMLIFrameElement; | |
| 39 | |
| 40 struct EventInit { | |
| 41 EventInit(); | |
| 42 | |
| 43 bool bubbles; | |
| 44 bool cancelable; | |
| 45 }; | |
| 46 | |
| 47 class Event : public ScriptWrappable, public RefCounted<Event> { | |
| 48 public: | |
| 49 enum PhaseType { | |
| 50 NONE = 0, | |
| 51 CAPTURING_PHASE = 1, | |
| 52 AT_TARGET = 2, | |
| 53 BUBBLING_PHASE = 3 | |
| 54 }; | |
| 55 | |
| 56 enum EventType { | |
| 57 MOUSEDOWN = 1, | |
| 58 MOUSEUP = 2, | |
| 59 MOUSEOVER = 4, | |
| 60 MOUSEOUT = 8, | |
| 61 MOUSEMOVE = 16, | |
| 62 MOUSEDRAG = 32, | |
| 63 CLICK = 64, | |
| 64 DBLCLICK = 128, | |
| 65 KEYDOWN = 256, | |
| 66 KEYUP = 512, | |
| 67 KEYPRESS = 1024, | |
| 68 DRAGDROP = 2048, | |
| 69 FOCUS = 4096, | |
| 70 BLUR = 8192, | |
| 71 SELECT = 16384, | |
| 72 CHANGE = 32768 | |
| 73 }; | |
| 74 | |
| 75 static PassRefPtr<Event> create() | |
| 76 { | |
| 77 return adoptRef(new Event); | |
| 78 } | |
| 79 | |
| 80 // A factory for a simple event. The event doesn't bubble, and isn't | |
| 81 // cancelable. | |
| 82 // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.ht
ml#fire-a-simple-event | |
| 83 static PassRefPtr<Event> create(const AtomicString& type) | |
| 84 { | |
| 85 return adoptRef(new Event(type, false, false)); | |
| 86 } | |
| 87 static PassRefPtr<Event> createCancelable(const AtomicString& type) | |
| 88 { | |
| 89 return adoptRef(new Event(type, false, true)); | |
| 90 } | |
| 91 static PassRefPtr<Event> createBubble(const AtomicString& type) | |
| 92 { | |
| 93 return adoptRef(new Event(type, true, false)); | |
| 94 } | |
| 95 static PassRefPtr<Event> createCancelableBubble(const AtomicString& type) | |
| 96 { | |
| 97 return adoptRef(new Event(type, true, true)); | |
| 98 } | |
| 99 | |
| 100 static PassRefPtr<Event> create(const AtomicString& type, const EventInit& i
nitializer) | |
| 101 { | |
| 102 return adoptRef(new Event(type, initializer)); | |
| 103 } | |
| 104 | |
| 105 virtual ~Event(); | |
| 106 | |
| 107 void initEvent(const AtomicString& type, bool canBubble, bool cancelable); | |
| 108 | |
| 109 const AtomicString& type() const { return m_type; } | |
| 110 void setType(const AtomicString& type) { m_type = type; } | |
| 111 | |
| 112 EventTarget* target() const { return m_target.get(); } | |
| 113 void setTarget(PassRefPtr<EventTarget>); | |
| 114 | |
| 115 EventTarget* currentTarget() const { return m_currentTarget; } | |
| 116 void setCurrentTarget(EventTarget* currentTarget) { m_currentTarget = curren
tTarget; } | |
| 117 | |
| 118 unsigned short eventPhase() const { return m_eventPhase; } | |
| 119 void setEventPhase(unsigned short eventPhase) { m_eventPhase = eventPhase; } | |
| 120 | |
| 121 bool bubbles() const { return m_canBubble; } | |
| 122 bool cancelable() const { return m_cancelable; } | |
| 123 DOMTimeStamp timeStamp() const { return m_createTime; } | |
| 124 | |
| 125 void stopPropagation() { m_propagationStopped = true; } | |
| 126 void stopImmediatePropagation() { m_immediatePropagationStopped = true; } | |
| 127 | |
| 128 // IE Extensions | |
| 129 EventTarget* srcElement() const { return target(); } // MSIE extension - "th
e object that fired the event" | |
| 130 | |
| 131 bool legacyReturnValue() const { return !defaultPrevented(); } | |
| 132 void setLegacyReturnValue(bool returnValue) { setDefaultPrevented(!returnVal
ue); } | |
| 133 | |
| 134 Clipboard* clipboardData() const { return isClipboardEvent() ? clipboard() :
0; } | |
| 135 | |
| 136 virtual const AtomicString& interfaceName() const; | |
| 137 bool hasInterface(const AtomicString&) const; | |
| 138 | |
| 139 // These events are general classes of events. | |
| 140 virtual bool isUIEvent() const; | |
| 141 virtual bool isMouseEvent() const; | |
| 142 virtual bool isFocusEvent() const; | |
| 143 virtual bool isKeyboardEvent() const; | |
| 144 virtual bool isTouchEvent() const; | |
| 145 | |
| 146 // Drag events are a subset of mouse events. | |
| 147 virtual bool isDragEvent() const; | |
| 148 | |
| 149 // These events lack a DOM interface. | |
| 150 virtual bool isClipboardEvent() const; | |
| 151 virtual bool isBeforeTextInsertedEvent() const; | |
| 152 | |
| 153 virtual bool isBeforeUnloadEvent() const; | |
| 154 | |
| 155 bool propagationStopped() const { return m_propagationStopped || m_immediate
PropagationStopped; } | |
| 156 bool immediatePropagationStopped() const { return m_immediatePropagationStop
ped; } | |
| 157 | |
| 158 bool defaultPrevented() const { return m_defaultPrevented; } | |
| 159 void preventDefault() | |
| 160 { | |
| 161 if (m_cancelable) | |
| 162 m_defaultPrevented = true; | |
| 163 } | |
| 164 void setDefaultPrevented(bool defaultPrevented) { m_defaultPrevented = defau
ltPrevented; } | |
| 165 | |
| 166 bool defaultHandled() const { return m_defaultHandled; } | |
| 167 void setDefaultHandled() { m_defaultHandled = true; } | |
| 168 | |
| 169 bool cancelBubble() const { return m_cancelBubble; } | |
| 170 void setCancelBubble(bool cancel) { m_cancelBubble = cancel; } | |
| 171 | |
| 172 Event* underlyingEvent() const { return m_underlyingEvent.get(); } | |
| 173 void setUnderlyingEvent(PassRefPtr<Event>); | |
| 174 | |
| 175 EventPath& eventPath() { return m_eventPath; } | |
| 176 PassRefPtr<NodeList> path() const; | |
| 177 | |
| 178 virtual Clipboard* clipboard() const { return 0; } | |
| 179 | |
| 180 bool isBeingDispatched() const { return eventPhase(); } | |
| 181 | |
| 182 protected: | |
| 183 Event(); | |
| 184 Event(const AtomicString& type, bool canBubble, bool cancelable); | |
| 185 Event(const AtomicString& type, const EventInit&); | |
| 186 | |
| 187 virtual void receivedTarget(); | |
| 188 bool dispatched() const { return m_target; } | |
| 189 | |
| 190 private: | |
| 191 AtomicString m_type; | |
| 192 bool m_canBubble; | |
| 193 bool m_cancelable; | |
| 194 | |
| 195 bool m_propagationStopped; | |
| 196 bool m_immediatePropagationStopped; | |
| 197 bool m_defaultPrevented; | |
| 198 bool m_defaultHandled; | |
| 199 bool m_cancelBubble; | |
| 200 | |
| 201 unsigned short m_eventPhase; | |
| 202 EventTarget* m_currentTarget; | |
| 203 RefPtr<EventTarget> m_target; | |
| 204 DOMTimeStamp m_createTime; | |
| 205 RefPtr<Event> m_underlyingEvent; | |
| 206 EventPath m_eventPath; | |
| 207 }; | |
| 208 | |
| 209 } // namespace WebCore | |
| 210 | |
| 211 #endif // Event_h | |
| OLD | NEW |