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 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007 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 * Copyright (C) 2011 Andreas Kling (kling@webkit.org) | 8 * Copyright (C) 2011 Andreas Kling (kling@webkit.org) |
9 * | 9 * |
10 * Redistribution and use in source and binary forms, with or without | 10 * Redistribution and use in source and binary forms, with or without |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 assertNoActiveIterators(); | 162 assertNoActiveIterators(); |
163 | 163 |
164 for (const auto& entry : m_entries) { | 164 for (const auto& entry : m_entries) { |
165 if (entry.first == eventType) | 165 if (entry.first == eventType) |
166 return entry.second.get(); | 166 return entry.second.get(); |
167 } | 167 } |
168 | 168 |
169 return 0; | 169 return 0; |
170 } | 170 } |
171 | 171 |
172 static void removeFirstListenerCreatedFromMarkup(EventListenerVector* listenerVe
ctor) | |
173 { | |
174 for (size_t i = 0; i < listenerVector->size(); ++i) { | |
175 if (listenerVector->at(i).listener->wasCreatedFromMarkup()) { | |
176 listenerVector->remove(i); | |
177 return; | |
178 } | |
179 } | |
180 ASSERT_NOT_REACHED(); | |
181 } | |
182 | |
183 void EventListenerMap::removeFirstEventListenerCreatedFromMarkup(const AtomicStr
ing& eventType) | |
184 { | |
185 assertNoActiveIterators(); | |
186 | |
187 for (unsigned i = 0; i < m_entries.size(); ++i) { | |
188 if (m_entries[i].first == eventType) { | |
189 removeFirstListenerCreatedFromMarkup(m_entries[i].second.get()); | |
190 if (m_entries[i].second->isEmpty()) | |
191 m_entries.remove(i); | |
192 return; | |
193 } | |
194 } | |
195 } | |
196 | |
197 static void copyListenersNotCreatedFromMarkupToTarget(const AtomicString& eventT
ype, EventListenerVector* listenerVector, EventTarget* target) | 172 static void copyListenersNotCreatedFromMarkupToTarget(const AtomicString& eventT
ype, EventListenerVector* listenerVector, EventTarget* target) |
198 { | 173 { |
199 for (const auto& eventListener : *listenerVector) { | 174 for (const auto& eventListener : *listenerVector) { |
200 // Event listeners created from markup have already been transfered to t
he shadow tree during cloning. | 175 // Event listeners created from markup have already been transfered to t
he shadow tree during cloning. |
201 if (eventListener.listener->wasCreatedFromMarkup()) | 176 if (eventListener.listener->wasCreatedFromMarkup()) |
202 continue; | 177 continue; |
203 target->addEventListener(eventType, eventListener.listener, eventListene
r.useCapture); | 178 target->addEventListener(eventType, eventListener.listener, eventListene
r.useCapture); |
204 } | 179 } |
205 } | 180 } |
206 | 181 |
207 void EventListenerMap::copyEventListenersNotCreatedFromMarkupToTarget(EventTarge
t* target) | 182 void EventListenerMap::copyEventListenersNotCreatedFromMarkupToTarget(EventTarge
t* target) |
208 { | 183 { |
209 assertNoActiveIterators(); | 184 assertNoActiveIterators(); |
210 | 185 |
211 for (const auto& eventListener : m_entries) | 186 for (const auto& eventListener : m_entries) |
212 copyListenersNotCreatedFromMarkupToTarget(eventListener.first, eventList
ener.second.get(), target); | 187 copyListenersNotCreatedFromMarkupToTarget(eventListener.first, eventList
ener.second.get(), target); |
213 } | 188 } |
214 | 189 |
215 EventListenerIterator::EventListenerIterator() | |
216 : m_map(nullptr) | |
217 , m_entryIndex(0) | |
218 , m_index(0) | |
219 { | |
220 } | |
221 | |
222 EventListenerIterator::EventListenerIterator(EventTarget* target) | 190 EventListenerIterator::EventListenerIterator(EventTarget* target) |
223 : m_map(nullptr) | 191 : m_map(nullptr) |
224 , m_entryIndex(0) | 192 , m_entryIndex(0) |
225 , m_index(0) | 193 , m_index(0) |
226 { | 194 { |
227 ASSERT(target); | 195 ASSERT(target); |
228 EventTargetData* data = target->eventTargetData(); | 196 EventTargetData* data = target->eventTargetData(); |
229 | 197 |
230 if (!data) | 198 if (!data) |
231 return; | 199 return; |
(...skipping 27 matching lines...) Expand all Loading... |
259 EventListenerVector& listeners = *m_map->m_entries[m_entryIndex].second; | 227 EventListenerVector& listeners = *m_map->m_entries[m_entryIndex].second; |
260 if (m_index < listeners.size()) | 228 if (m_index < listeners.size()) |
261 return listeners[m_index++].listener.get(); | 229 return listeners[m_index++].listener.get(); |
262 m_index = 0; | 230 m_index = 0; |
263 } | 231 } |
264 | 232 |
265 return 0; | 233 return 0; |
266 } | 234 } |
267 | 235 |
268 } // namespace blink | 236 } // namespace blink |
OLD | NEW |