void CharacterData::dispatchModifiedEvent(const String& oldData) { if (OwnPtr<MutationObserverInterestGroup> mutationRecipients = MutationObserverInterestGroup::createForCharacterDataMutation(this)) mutationRecipients->enqueueMutationRecord(MutationRecord::createCharacterData(this, oldData)); if (!isInShadowTree()) { if (parentNode()) parentNode()->childrenChanged(); if (document()->hasListenerType(Document::DOMCHARACTERDATAMODIFIED_LISTENER)) dispatchScopedEvent(MutationEvent::create(eventNames().DOMCharacterDataModifiedEvent, true, 0, oldData, m_data)); dispatchSubtreeModifiedEvent(); } InspectorInstrumentation::characterDataModified(document(), this); }
void HTMLDialogElement::closeDialog(const String& returnValue) { if (!fastHasAttribute(openAttr)) return; setBooleanAttribute(openAttr, false); HTMLDialogElement* activeModalDialog = document().activeModalDialog(); document().removeFromTopLayer(this); if (activeModalDialog == this) inertSubtreesChanged(document()); if (!returnValue.isNull()) m_returnValue = returnValue; dispatchScopedEvent(Event::create(EventTypeNames::close)); }
void CharacterData::didModifyData(const String& oldData, UpdateSource source) { if (OwnPtrWillBeRawPtr<MutationObserverInterestGroup> mutationRecipients = MutationObserverInterestGroup::createForCharacterDataMutation(*this)) mutationRecipients->enqueueMutationRecord(MutationRecord::createCharacterData(this, oldData)); if (parentNode()) { ContainerNode::ChildrenChange change = {ContainerNode::TextChanged, previousSibling(), nextSibling(), ContainerNode::ChildrenChangeSourceAPI}; parentNode()->childrenChanged(change); } // Skip DOM mutation events if the modification is from parser. // Note that mutation observer events will still fire. // Spec: https://html.spec.whatwg.org/multipage/syntax.html#insert-a-character if (source != UpdateFromParser && !isInShadowTree()) { if (document().hasListenerType(Document::DOMCHARACTERDATAMODIFIED_LISTENER)) dispatchScopedEvent(MutationEvent::create(EventTypeNames::DOMCharacterDataModified, true, nullptr, oldData, m_data)); dispatchSubtreeModifiedEvent(); } InspectorInstrumentation::characterDataModified(this); }
void CharacterData::dispatchModifiedEvent(const String& oldData) { if (std::unique_ptr<MutationObserverInterestGroup> mutationRecipients = MutationObserverInterestGroup::createForCharacterDataMutation(*this)) mutationRecipients->enqueueMutationRecord(MutationRecord::createCharacterData(*this, oldData)); if (!isInShadowTree()) { if (parentNode()) { ContainerNode::ChildChange change = { ContainerNode::TextChanged, ElementTraversal::previousSibling(*this), ElementTraversal::nextSibling(*this), ContainerNode::ChildChangeSourceAPI }; parentNode()->childrenChanged(change); } if (document().hasListenerType(Document::DOMCHARACTERDATAMODIFIED_LISTENER)) dispatchScopedEvent(MutationEvent::create(eventNames().DOMCharacterDataModifiedEvent, true, nullptr, oldData, m_data)); dispatchSubtreeModifiedEvent(); } InspectorInstrumentation::characterDataModified(document(), *this); }