Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: Source/core/events/EventTarget.h

Issue 26878003: Reduce repetitive EventTarget subclassing (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix nit Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Node.cpp ('k') | Source/core/events/EventTarget.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 bool hasCapturingEventListeners(const AtomicString& eventType); 124 bool hasCapturingEventListeners(const AtomicString& eventType);
125 const EventListenerVector& getEventListeners(const AtomicString& eventTy pe); 125 const EventListenerVector& getEventListeners(const AtomicString& eventTy pe);
126 126
127 bool fireEventListeners(Event*); 127 bool fireEventListeners(Event*);
128 bool isFiringEventListeners(); 128 bool isFiringEventListeners();
129 129
130 protected: 130 protected:
131 virtual ~EventTarget(); 131 virtual ~EventTarget();
132 132
133 virtual EventTargetData* eventTargetData() = 0; 133 virtual EventTargetData* eventTargetData() = 0;
134 virtual EventTargetData* ensureEventTargetData() = 0; 134 virtual EventTargetData& ensureEventTargetData() = 0;
135 135
136 private: 136 private:
137 virtual void refEventTarget() = 0; 137 virtual void refEventTarget() = 0;
138 virtual void derefEventTarget() = 0; 138 virtual void derefEventTarget() = 0;
139 139
140 DOMWindow* executingWindow(); 140 DOMWindow* executingWindow();
141 void fireEventListeners(Event*, EventTargetData*, EventListenerVector&); 141 void fireEventListeners(Event*, EventTargetData*, EventListenerVector&);
142 void countLegacyEvents(const AtomicString& legacyTypeName, EventListener Vector*, EventListenerVector*); 142 void countLegacyEvents(const AtomicString& legacyTypeName, EventListener Vector*, EventListenerVector*);
143 143
144 bool clearAttributeEventListener(const AtomicString& eventType, DOMWrapp erWorld* isolatedWorld); 144 bool clearAttributeEventListener(const AtomicString& eventType, DOMWrapp erWorld* isolatedWorld);
145 145
146 friend class EventListenerIterator; 146 friend class EventListenerIterator;
147 }; 147 };
148 148
149 class EventTargetWithInlineData : public EventTarget {
150 protected:
151 virtual EventTargetData* eventTargetData() OVERRIDE FINAL { return &m_ev entTargetData; }
152 virtual EventTargetData& ensureEventTargetData() OVERRIDE FINAL { return m_eventTargetData; }
153 private:
154 EventTargetData m_eventTargetData;
155 };
156
149 // FIXME: These macros should be split into separate DEFINE and DECLARE 157 // FIXME: These macros should be split into separate DEFINE and DECLARE
150 // macros to avoid causing so many header includes. 158 // macros to avoid causing so many header includes.
151 #define DEFINE_ATTRIBUTE_EVENT_LISTENER(attribute) \ 159 #define DEFINE_ATTRIBUTE_EVENT_LISTENER(attribute) \
152 EventListener* on##attribute(DOMWrapperWorld* isolatedWorld) { return ge tAttributeEventListener(EventTypeNames::attribute, isolatedWorld); } \ 160 EventListener* on##attribute(DOMWrapperWorld* isolatedWorld) { return ge tAttributeEventListener(EventTypeNames::attribute, isolatedWorld); } \
153 void setOn##attribute(PassRefPtr<EventListener> listener, DOMWrapperWorl d* isolatedWorld = 0) { setAttributeEventListener(EventTypeNames::attribute, lis tener, isolatedWorld); } \ 161 void setOn##attribute(PassRefPtr<EventListener> listener, DOMWrapperWorl d* isolatedWorld = 0) { setAttributeEventListener(EventTypeNames::attribute, lis tener, isolatedWorld); } \
154 162
155 #define DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(attribute) \ 163 #define DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(attribute) \
156 virtual EventListener* on##attribute(DOMWrapperWorld* isolatedWorld); \ 164 virtual EventListener* on##attribute(DOMWrapperWorld* isolatedWorld); \
157 virtual void setOn##attribute(PassRefPtr<EventListener>, DOMWrapperWorld * isolatedWorld); \ 165 virtual void setOn##attribute(PassRefPtr<EventListener>, DOMWrapperWorld * isolatedWorld); \
158 166
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 { 212 {
205 EventTargetData* d = eventTargetData(); 213 EventTargetData* d = eventTargetData();
206 if (!d) 214 if (!d)
207 return false; 215 return false;
208 return d->eventListenerMap.containsCapturing(eventType); 216 return d->eventListenerMap.containsCapturing(eventType);
209 } 217 }
210 218
211 } // namespace WebCore 219 } // namespace WebCore
212 220
213 #endif // EventTarget_h 221 #endif // EventTarget_h
OLDNEW
« no previous file with comments | « Source/core/dom/Node.cpp ('k') | Source/core/events/EventTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698