| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
| 8 * | 8 * |
| 9 * Redistribution and use in source and binary forms, with or without | 9 * Redistribution and use in source and binary forms, with or without |
| 10 * modification, are permitted provided that the following conditions | 10 * modification, are permitted provided that the following conditions |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 public: | 67 public: |
| 68 EventTargetData(); | 68 EventTargetData(); |
| 69 ~EventTargetData(); | 69 ~EventTargetData(); |
| 70 | 70 |
| 71 EventListenerMap eventListenerMap; | 71 EventListenerMap eventListenerMap; |
| 72 OwnPtr<FiringEventIteratorVector> firingEventIterators; | 72 OwnPtr<FiringEventIteratorVector> firingEventIterators; |
| 73 }; | 73 }; |
| 74 | 74 |
| 75 class EventTarget : public WillBeGarbageCollectedMixin { | 75 class EventTarget : public WillBeGarbageCollectedMixin { |
| 76 public: | 76 public: |
| 77 #if !ENABLE(OILPAN) |
| 77 void ref() { refEventTarget(); } | 78 void ref() { refEventTarget(); } |
| 78 void deref() { derefEventTarget(); } | 79 void deref() { derefEventTarget(); } |
| 80 #endif |
| 79 | 81 |
| 80 virtual const AtomicString& interfaceName() const = 0; | 82 virtual const AtomicString& interfaceName() const = 0; |
| 81 virtual ExecutionContext* executionContext() const = 0; | 83 virtual ExecutionContext* executionContext() const = 0; |
| 82 | 84 |
| 83 virtual Node* toNode(); | 85 virtual Node* toNode(); |
| 84 virtual DOMWindow* toDOMWindow(); | 86 virtual DOMWindow* toDOMWindow(); |
| 85 virtual MessagePort* toMessagePort(); | 87 virtual MessagePort* toMessagePort(); |
| 86 | 88 |
| 87 // FIXME: first 2 args to addEventListener and removeEventListener should | 89 // FIXME: first 2 args to addEventListener and removeEventListener should |
| 88 // be required (per spec), but throwing TypeError breaks legacy content. | 90 // be required (per spec), but throwing TypeError breaks legacy content. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 113 virtual void trace(Visitor*) { } | 115 virtual void trace(Visitor*) { } |
| 114 | 116 |
| 115 protected: | 117 protected: |
| 116 virtual ~EventTarget(); | 118 virtual ~EventTarget(); |
| 117 | 119 |
| 118 // Subclasses should likely not override these themselves; instead, they sho
uld subclass EventTargetWithInlineData. | 120 // Subclasses should likely not override these themselves; instead, they sho
uld subclass EventTargetWithInlineData. |
| 119 virtual EventTargetData* eventTargetData() = 0; | 121 virtual EventTargetData* eventTargetData() = 0; |
| 120 virtual EventTargetData& ensureEventTargetData() = 0; | 122 virtual EventTargetData& ensureEventTargetData() = 0; |
| 121 | 123 |
| 122 private: | 124 private: |
| 125 #if !ENABLE(OILPAN) |
| 123 // Subclasses should likely not override these themselves; instead, they sho
uld use the REFCOUNTED_EVENT_TARGET() macro. | 126 // Subclasses should likely not override these themselves; instead, they sho
uld use the REFCOUNTED_EVENT_TARGET() macro. |
| 124 virtual void refEventTarget() = 0; | 127 virtual void refEventTarget() = 0; |
| 125 virtual void derefEventTarget() = 0; | 128 virtual void derefEventTarget() = 0; |
| 129 #endif |
| 126 | 130 |
| 127 DOMWindow* executingWindow(); | 131 DOMWindow* executingWindow(); |
| 128 void fireEventListeners(Event*, EventTargetData*, EventListenerVector&); | 132 void fireEventListeners(Event*, EventTargetData*, EventListenerVector&); |
| 129 void countLegacyEvents(const AtomicString& legacyTypeName, EventListenerVect
or*, EventListenerVector*); | 133 void countLegacyEvents(const AtomicString& legacyTypeName, EventListenerVect
or*, EventListenerVector*); |
| 130 | 134 |
| 131 bool clearAttributeEventListener(const AtomicString& eventType); | 135 bool clearAttributeEventListener(const AtomicString& eventType); |
| 132 | 136 |
| 133 friend class EventListenerIterator; | 137 friend class EventListenerIterator; |
| 134 }; | 138 }; |
| 135 | 139 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 inline bool EventTarget::hasCapturingEventListeners(const AtomicString& eventTyp
e) | 210 inline bool EventTarget::hasCapturingEventListeners(const AtomicString& eventTyp
e) |
| 207 { | 211 { |
| 208 EventTargetData* d = eventTargetData(); | 212 EventTargetData* d = eventTargetData(); |
| 209 if (!d) | 213 if (!d) |
| 210 return false; | 214 return false; |
| 211 return d->eventListenerMap.containsCapturing(eventType); | 215 return d->eventListenerMap.containsCapturing(eventType); |
| 212 } | 216 } |
| 213 | 217 |
| 214 } // namespace WebCore | 218 } // namespace WebCore |
| 215 | 219 |
| 220 #if ENABLE(OILPAN) |
| 216 #define DEFINE_EVENT_TARGET_REFCOUNTING(baseClass) \ | 221 #define DEFINE_EVENT_TARGET_REFCOUNTING(baseClass) \ |
| 217 public: \ | 222 public: \ |
| 218 using baseClass::ref; \ | 223 using baseClass::ref; \ |
| 224 using baseClass::deref; \ |
| 225 private: \ |
| 226 typedef int thisIsHereToForceASemiColonAfterThisEventTargetMacro |
| 227 #define DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(baseClass) |
| 228 #else |
| 229 #define DEFINE_EVENT_TARGET_REFCOUNTING(baseClass) \ |
| 230 public: \ |
| 231 using baseClass::ref; \ |
| 219 using baseClass::deref; \ | 232 using baseClass::deref; \ |
| 220 private: \ | 233 private: \ |
| 221 virtual void refEventTarget() OVERRIDE FINAL { ref(); } \ | 234 virtual void refEventTarget() OVERRIDE FINAL { ref(); } \ |
| 222 virtual void derefEventTarget() OVERRIDE FINAL { deref(); } \ | 235 virtual void derefEventTarget() OVERRIDE FINAL { deref(); } \ |
| 223 typedef int thisIsHereToForceASemiColonAfterThisEventTargetMacro | 236 typedef int thisIsHereToForceASemiColonAfterThisEventTargetMacro |
| 237 #define DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(baseClass) DEFINE_EVENT_
TARGET_REFCOUNTING(baseClass) |
| 238 #endif |
| 224 | 239 |
| 225 // Use this macro if your EventTarget subclass is also a subclass of WTF::RefCou
nted. | 240 // Use this macro if your EventTarget subclass is also a subclass of WTF::RefCou
nted. |
| 226 // A ref-counted class that uses a different method of refcounting should use DE
FINE_EVENT_TARGET_REFCOUNTING directly. | 241 // A ref-counted class that uses a different method of refcounting should use DE
FINE_EVENT_TARGET_REFCOUNTING directly. |
| 227 // Both of these macros are meant to be placed just before the "public:" section
of the class declaration. | 242 // Both of these macros are meant to be placed just before the "public:" section
of the class declaration. |
| 228 #define REFCOUNTED_EVENT_TARGET(className) DEFINE_EVENT_TARGET_REFCOUNTING(RefCo
untedWillBeRefCountedGarbageCollected<className>) | 243 #define REFCOUNTED_EVENT_TARGET(className) DEFINE_EVENT_TARGET_REFCOUNTING(RefCo
untedWillBeRefCountedGarbageCollected<className>) |
| 229 | 244 |
| 230 #endif // EventTarget_h | 245 #endif // EventTarget_h |
| OLD | NEW |