void EventListenerMap::removeFirstEventListenerCreatedFromMarkup(const AtomicString& eventType) { ASSERT(!m_activeIteratorCount); if (m_hashMap) { EventListenerHashMap::iterator result = m_hashMap->find(eventType); ASSERT(result != m_hashMap->end()); EventListenerVector* listenerVector = result->second; ASSERT(listenerVector); removeFirstListenerCreatedFromMarkup(listenerVector); if (listenerVector->isEmpty()) { delete listenerVector; m_hashMap->remove(result); } return; } ASSERT(m_singleEventListenerVector); ASSERT(m_singleEventListenerType == eventType); removeFirstListenerCreatedFromMarkup(m_singleEventListenerVector.get()); if (m_singleEventListenerVector->isEmpty()) { m_singleEventListenerVector.clear(); m_singleEventListenerType = nullAtom; } }
void EventListenerMap::removeFirstEventListenerCreatedFromMarkup(const AtomicString& eventType) { assertNoActiveIterators(); for (unsigned i = 0; i < m_entries.size(); ++i) { if (m_entries[i].first == eventType) { removeFirstListenerCreatedFromMarkup(*m_entries[i].second); if (m_entries[i].second->isEmpty()) m_entries.remove(i); return; } } }