Bug 1406325 - Part 1: Make sure custom element state is custom before sending callback.

Tag UXP Issue #1344
This commit is contained in:
Gaming4JC 2020-01-19 22:17:12 -05:00 committed by Roy Tam
commit cce9b3379a

View file

@ -1687,7 +1687,8 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
if (CustomElementRegistry::IsCustomElementEnabled() && IsInComposedDoc()) {
// Connected callback must be enqueued whenever a custom element becomes
// connected.
if (GetCustomElementData()) {
CustomElementData* data = GetCustomElementData();
if (data && data->mState == CustomElementData::State::eCustom) {
nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eConnected, this);
}
}
@ -1985,10 +1986,12 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent)
// Disconnected must be enqueued whenever a connected custom element becomes
// disconnected.
if (CustomElementRegistry::IsCustomElementEnabled() &&
GetCustomElementData()) {
nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eDisconnected,
this);
if (CustomElementRegistry::IsCustomElementEnabled()) {
CustomElementData* data = GetCustomElementData();
if (data && data->mState == CustomElementData::State::eCustom) {
nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eDisconnected,
this);
}
}
}
@ -2589,6 +2592,9 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
nsContentUtils::GetElementDefinitionIfObservingAttr(this,
data->mType,
aName)) {
MOZ_ASSERT(data->mState == CustomElementData::State::eCustom,
"AttributeChanged callback should fire only if "
"custom element state is custom");
nsCOMPtr<nsIAtom> oldValueAtom = oldValue->GetAsAtom();
nsCOMPtr<nsIAtom> newValueAtom = valueForAfterSetAttr.GetAsAtom();
nsAutoString ns;
@ -2856,6 +2862,9 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsContentUtils::GetElementDefinitionIfObservingAttr(this,
data->mType,
aName)) {
MOZ_ASSERT(data->mState == CustomElementData::State::eCustom,
"AttributeChanged callback should fire only if "
"custom element state is custom");
nsAutoString ns;
nsContentUtils::NameSpaceManager()->GetNameSpaceURI(aNameSpaceID, ns);