From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- .../WebCore/dom/MutationObserverInterestGroup.cpp | 44 +++++++++++----------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'Source/WebCore/dom/MutationObserverInterestGroup.cpp') diff --git a/Source/WebCore/dom/MutationObserverInterestGroup.cpp b/Source/WebCore/dom/MutationObserverInterestGroup.cpp index c28d2bd93..229fcb60e 100644 --- a/Source/WebCore/dom/MutationObserverInterestGroup.cpp +++ b/Source/WebCore/dom/MutationObserverInterestGroup.cpp @@ -37,50 +37,48 @@ namespace WebCore { -PassOwnPtr MutationObserverInterestGroup::createIfNeeded(Node& target, MutationObserver::MutationType type, MutationRecordDeliveryOptions oldValueFlag, const QualifiedName* attributeName) +inline MutationObserverInterestGroup::MutationObserverInterestGroup(HashMap&& observers, MutationRecordDeliveryOptions oldValueFlag) + : m_observers(WTFMove(observers)) + , m_oldValueFlag(oldValueFlag) +{ + ASSERT(!m_observers.isEmpty()); +} + +std::unique_ptr MutationObserverInterestGroup::createIfNeeded(Node& target, MutationObserver::MutationType type, MutationRecordDeliveryOptions oldValueFlag, const QualifiedName* attributeName) { ASSERT((type == MutationObserver::Attributes && attributeName) || !attributeName); - HashMap observers; - target.getRegisteredMutationObserversOfType(observers, type, attributeName); + auto observers = target.registeredMutationObservers(type, attributeName); if (observers.isEmpty()) return nullptr; - return adoptPtr(new MutationObserverInterestGroup(observers, oldValueFlag)); -} - -MutationObserverInterestGroup::MutationObserverInterestGroup(HashMap& observers, MutationRecordDeliveryOptions oldValueFlag) - : m_oldValueFlag(oldValueFlag) -{ - ASSERT(!observers.isEmpty()); - m_observers.swap(observers); + return std::make_unique(WTFMove(observers), oldValueFlag); } -bool MutationObserverInterestGroup::isOldValueRequested() +bool MutationObserverInterestGroup::isOldValueRequested() const { - for (HashMap::iterator iter = m_observers.begin(); iter != m_observers.end(); ++iter) { - if (hasOldValue(iter->value)) + for (auto options : m_observers.values()) { + if (hasOldValue(options)) return true; } return false; } -void MutationObserverInterestGroup::enqueueMutationRecord(PassRefPtr prpMutation) +void MutationObserverInterestGroup::enqueueMutationRecord(Ref&& mutation) { - RefPtr mutation = prpMutation; RefPtr mutationWithNullOldValue; - for (HashMap::iterator iter = m_observers.begin(); iter != m_observers.end(); ++iter) { - MutationObserver* observer = iter->key; - if (hasOldValue(iter->value)) { - observer->enqueueMutationRecord(mutation); + for (auto& observerOptionsPair : m_observers) { + MutationObserver* observer = observerOptionsPair.key; + if (hasOldValue(observerOptionsPair.value)) { + observer->enqueueMutationRecord(mutation.copyRef()); continue; } if (!mutationWithNullOldValue) { if (mutation->oldValue().isNull()) - mutationWithNullOldValue = mutation; + mutationWithNullOldValue = mutation.ptr(); else - mutationWithNullOldValue = MutationRecord::createWithNullOldValue(mutation).get(); + mutationWithNullOldValue = MutationRecord::createWithNullOldValue(mutation).ptr(); } - observer->enqueueMutationRecord(mutationWithNullOldValue); + observer->enqueueMutationRecord(*mutationWithNullOldValue); } } -- cgit v1.2.1