Modified: branches/safari-613-branch/Source/WebCore/dom/EventListenerMap.cpp (292335 => 292336)
--- branches/safari-613-branch/Source/WebCore/dom/EventListenerMap.cpp 2022-04-04 21:56:03 UTC (rev 292335)
+++ branches/safari-613-branch/Source/WebCore/dom/EventListenerMap.cpp 2022-04-04 21:56:05 UTC (rev 292336)
@@ -88,7 +88,7 @@
assertNoActiveIterators();
for (auto& entry : m_entries) {
- for (auto& listener : *entry.second)
+ for (auto& listener : entry.second)
listener->markAsRemoved();
}
@@ -144,9 +144,7 @@
return true;
}
- auto listeners = makeUnique<EventListenerVector>();
- listeners->uncheckedAppend(RegisteredEventListener::create(WTFMove(listener), options));
- m_entries.append({ eventType, WTFMove(listeners) });
+ m_entries.append({ eventType, EventListenerVector { RegisteredEventListener::create(WTFMove(listener), options) } });
return true;
}
@@ -169,8 +167,8 @@
for (unsigned i = 0; i < m_entries.size(); ++i) {
if (m_entries[i].first == eventType) {
- bool wasRemoved = removeListenerFromVector(*m_entries[i].second, listener, useCapture);
- if (m_entries[i].second->isEmpty())
+ bool wasRemoved = removeListenerFromVector(m_entries[i].second, listener, useCapture);
+ if (m_entries[i].second.isEmpty())
m_entries.remove(i);
return wasRemoved;
}
@@ -179,11 +177,11 @@
return false;
}
-EventListenerVector* EventListenerMap::find(const AtomString& eventType) const
+EventListenerVector* EventListenerMap::find(const AtomString& eventType)
{
for (auto& entry : m_entries) {
if (entry.first == eventType)
- return entry.second.get();
+ return &entry.second;
}
return nullptr;
@@ -209,8 +207,8 @@
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())
+ removeFirstListenerCreatedFromMarkup(m_entries[i].second);
+ if (m_entries[i].second.isEmpty())
m_entries.remove(i);
return;
}
@@ -230,7 +228,7 @@
void EventListenerMap::copyEventListenersNotCreatedFromMarkupToTarget(EventTarget* target)
{
for (auto& entry : m_entries)
- copyListenersNotCreatedFromMarkupToTarget(entry.first, *entry.second, target);
+ copyListenersNotCreatedFromMarkupToTarget(entry.first, entry.second, target);
}
EventListenerIterator::EventListenerIterator(EventTarget* target)
@@ -271,7 +269,7 @@
return nullptr;
for (; m_entryIndex < m_map->m_entries.size(); ++m_entryIndex) {
- EventListenerVector& listeners = *m_map->m_entries[m_entryIndex].second;
+ EventListenerVector& listeners = m_map->m_entries[m_entryIndex].second;
if (m_index < listeners.size())
return &listeners[m_index++]->callback();
m_index = 0;
Modified: branches/safari-613-branch/Source/WebCore/dom/EventListenerMap.h (292335 => 292336)
--- branches/safari-613-branch/Source/WebCore/dom/EventListenerMap.h 2022-04-04 21:56:03 UTC (rev 292335)
+++ branches/safari-613-branch/Source/WebCore/dom/EventListenerMap.h 2022-04-04 21:56:05 UTC (rev 292336)
@@ -59,7 +59,8 @@
void replace(const AtomString& eventType, EventListener& oldListener, Ref<EventListener>&& newListener, const RegisteredEventListener::Options&);
bool add(const AtomString& eventType, Ref<EventListener>&&, const RegisteredEventListener::Options&);
bool remove(const AtomString& eventType, EventListener&, bool useCapture);
- WEBCORE_EXPORT EventListenerVector* find(const AtomString& eventType) const;
+ WEBCORE_EXPORT EventListenerVector* find(const AtomString& eventType);
+ const EventListenerVector* find(const AtomString& eventType) const { return const_cast<EventListenerMap*>(this)->find(eventType); }
Vector<AtomString> eventTypes() const;
void removeFirstEventListenerCreatedFromMarkup(const AtomString& eventType);
@@ -72,7 +73,7 @@
void assertNoActiveIterators() const;
- Vector<std::pair<AtomString, std::unique_ptr<EventListenerVector>>, 2> m_entries;
+ Vector<std::pair<AtomString, EventListenerVector>> m_entries;
#ifndef NDEBUG
std::atomic<int> m_activeIteratorCount { 0 };