| 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 |