mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 13:58:49 +00:00
Issue #3030 - Account for custom elements in attribute value checking.
Refactors MaybeCheckSameAttrVal to streamline old value storage for custom elements.
This commit is contained in:
+10
-11
@@ -2342,6 +2342,7 @@ Element::MaybeCheckSameAttrVal(int32_t aNamespaceID,
|
||||
bool* aOldValueSet)
|
||||
{
|
||||
bool modification = false;
|
||||
CustomElementData* customElementData = GetCustomElementData();
|
||||
*aHasListeners = aNotify &&
|
||||
nsContentUtils::HasMutationListeners(this,
|
||||
NS_EVENT_BITS_MUTATION_ATTRMODIFIED,
|
||||
@@ -2357,13 +2358,14 @@ Element::MaybeCheckSameAttrVal(int32_t aNamespaceID,
|
||||
if (*aHasListeners || aNotify) {
|
||||
BorrowedAttrInfo info(GetAttrInfo(aNamespaceID, aName));
|
||||
if (info.mValue) {
|
||||
// Check whether the old value is the same as the new one. Note that we
|
||||
// only need to actually _get_ the old value if we have listeners or
|
||||
// if the element is a custom element (because it may have an
|
||||
// attribute changed callback).
|
||||
if (*aHasListeners || GetCustomElementData()) {
|
||||
// Need to store the old value.
|
||||
//
|
||||
bool valueMatches = aValue.EqualsAsStrings(*info.mValue);
|
||||
if (valueMatches && aPrefix == info.mName->GetPrefix()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Need to store the old value if listeners are present or this is a
|
||||
// custom element that may run an attribute-changed callback.
|
||||
if (*aHasListeners || customElementData) {
|
||||
// If the current attribute value contains a pointer to some other data
|
||||
// structure that gets updated in the process of setting the attribute
|
||||
// we'll no longer have the old value of the attribute. Therefore, we
|
||||
@@ -2374,10 +2376,7 @@ Element::MaybeCheckSameAttrVal(int32_t aNamespaceID,
|
||||
aOldValue.SetToSerialized(*info.mValue);
|
||||
*aOldValueSet = true;
|
||||
}
|
||||
bool valueMatches = aValue.EqualsAsStrings(*info.mValue);
|
||||
if (valueMatches && aPrefix == info.mName->GetPrefix()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
modification = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user