summaryrefslogtreecommitdiffstats
path: root/dom/base/nsContentUtils.cpp
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-05 12:13:14 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:50:25 -0500
commitbf004bb63bcc9e2ea5f9417461ecb3042b27a2fa (patch)
tree8ffe8d9d391a5c72e033085f4ad02cff3757ca9a /dom/base/nsContentUtils.cpp
parent08fc057471e0f74a558de887e6f9ea9e19d42876 (diff)
downloadUXP-bf004bb63bcc9e2ea5f9417461ecb3042b27a2fa.tar
UXP-bf004bb63bcc9e2ea5f9417461ecb3042b27a2fa.tar.gz
UXP-bf004bb63bcc9e2ea5f9417461ecb3042b27a2fa.tar.lz
UXP-bf004bb63bcc9e2ea5f9417461ecb3042b27a2fa.tar.xz
UXP-bf004bb63bcc9e2ea5f9417461ecb3042b27a2fa.zip
Bug 1334051 - Part 2: Invoke attributeChangedCallback only if attribute name is in the observed attribute list.
We call attributeChangedCallback in two cases: 1. When any of the attributes in the observed attribute list has changed, appended, removed, or replaced. 2. When upgrading an element, for each attribute in element's attribute list that is in the observed attribute list. Note: w/ Fixup for not implementing an API Enhancement Bug 1363481. Tag UXP Issue #1344
Diffstat (limited to 'dom/base/nsContentUtils.cpp')
-rw-r--r--dom/base/nsContentUtils.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
index b8ee09bf6..570065dba 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -9637,6 +9637,28 @@ nsContentUtils::SetupCustomElement(Element* aElement,
return registry->SetupCustomElement(aElement, aTypeExtension);
}
+/* static */ CustomElementDefinition*
+nsContentUtils::GetElementDefinitionIfObservingAttr(Element* aCustomElement,
+ nsIAtom* aExtensionType,
+ nsIAtom* aAttrName)
+{
+ nsString extType = nsDependentAtomString(aExtensionType);
+ NodeInfo *ni = aCustomElement->NodeInfo();
+
+ CustomElementDefinition* definition =
+ LookupCustomElementDefinition(aCustomElement->OwnerDoc(), ni->LocalName(),
+ ni->NamespaceID(),
+ extType.IsEmpty() ? nullptr : &extType);
+
+ // Custom element not defined yet or attribute is not in the observed
+ // attribute list.
+ if (!definition || !definition->IsInObservedAttributeList(aAttrName)) {
+ return nullptr;
+ }
+
+ return definition;
+}
+
/* static */ void
nsContentUtils::EnqueueLifecycleCallback(nsIDocument* aDoc,
nsIDocument::ElementCallbackType aType,