コード例 #1
0
ファイル: EventListenerMap.cpp プロジェクト: 1833183060/wke
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;
    }
}
コード例 #2
0
ファイル: EventListenerMap.cpp プロジェクト: ollie314/webkit
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;
        }
    }
}