diff options
Diffstat (limited to 'dom/base/CustomElementRegistry.cpp')
-rw-r--r-- | dom/base/CustomElementRegistry.cpp | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp index 6c643d861..bd48f3c07 100644 --- a/dom/base/CustomElementRegistry.cpp +++ b/dom/base/CustomElementRegistry.cpp @@ -933,23 +933,20 @@ void CustomElementReactionsStack::Enqueue(Element* aElement, CustomElementReaction* aReaction) { + RefPtr<CustomElementData> elementData = aElement->GetCustomElementData(); + MOZ_ASSERT(elementData, "CustomElementData should exist"); + // Add element to the current element queue. if (!mReactionsStack.IsEmpty()) { mReactionsStack.LastElement().AppendElement(do_GetWeakReference(aElement)); - ReactionQueue* reactionQueue = - mElementReactionQueueMap.LookupOrAdd(aElement); - reactionQueue->AppendElement(aReaction); - + elementData->mReactionQueue.AppendElement(aReaction); return; } // If the custom element reactions stack is empty, then: // Add element to the backup element queue. mBackupQueue.AppendElement(do_GetWeakReference(aElement)); - - ReactionQueue* reactionQueue = - mElementReactionQueueMap.LookupOrAdd(aElement); - reactionQueue->AppendElement(aReaction); + elementData->mReactionQueue.AppendElement(aReaction); if (mIsBackupQueueProcessing) { return; @@ -980,16 +977,15 @@ CustomElementReactionsStack::InvokeReactions(ElementQueue& aElementQueue) continue; } - nsAutoPtr<ReactionQueue> reactions; - mElementReactionQueueMap.RemoveAndForget(element, reactions); - - MOZ_ASSERT(reactions, - "Associated ReactionQueue must be found in mElementReactionQueueMap"); + RefPtr<CustomElementData> elementData = element->GetCustomElementData(); + MOZ_ASSERT(elementData, "CustomElementData should exist"); - for (uint32_t j = 0; j < reactions->Length(); ++j) { - nsAutoPtr<CustomElementReaction>& reaction = reactions->ElementAt(j); - reaction->Invoke(element); + nsTArray<nsAutoPtr<CustomElementReaction>>& reactions = + elementData->mReactionQueue; + for (uint32_t j = 0; j < reactions.Length(); ++j) { + reactions.ElementAt(j)->Invoke(element); } + reactions.Clear(); } aElementQueue.Clear(); } @@ -997,7 +993,6 @@ CustomElementReactionsStack::InvokeReactions(ElementQueue& aElementQueue) //----------------------------------------------------- // CustomElementDefinition - CustomElementDefinition::CustomElementDefinition(nsIAtom* aType, nsIAtom* aLocalName, JSObject* aConstructor, |