Bug 1852866 - Make LifecycleCallbackArgs::mName a RefPtr<nsAtom>. r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D188100
This commit is contained in:
Markus Stange
2023-09-13 18:15:02 +00:00
parent f3185b2a5c
commit fd848139b8
3 changed files with 9 additions and 12 deletions

View File

@@ -125,8 +125,7 @@ class CustomElementCallbackReaction final : public CustomElementReaction {
size_t LifecycleCallbackArgs::SizeOfExcludingThis( size_t LifecycleCallbackArgs::SizeOfExcludingThis(
MallocSizeOf aMallocSizeOf) const { MallocSizeOf aMallocSizeOf) const {
size_t n = mName.SizeOfExcludingThisIfUnshared(aMallocSizeOf); size_t n = mOldValue.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
n += mOldValue.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
n += mNewValue.SizeOfExcludingThisIfUnshared(aMallocSizeOf); n += mNewValue.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
n += mNamespaceURI.SizeOfExcludingThisIfUnshared(aMallocSizeOf); n += mNamespaceURI.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
return n; return n;
@@ -229,8 +228,8 @@ void CustomElementCallback::Call() {
break; break;
case ElementCallbackType::eAttributeChanged: case ElementCallbackType::eAttributeChanged:
static_cast<LifecycleAttributeChangedCallback*>(mCallback.get()) static_cast<LifecycleAttributeChangedCallback*>(mCallback.get())
->Call(mThisObject, mArgs.mName, mArgs.mOldValue, mArgs.mNewValue, ->Call(mThisObject, nsDependentAtomString(mArgs.mName),
mArgs.mNamespaceURI); mArgs.mOldValue, mArgs.mNewValue, mArgs.mNamespaceURI);
break; break;
case ElementCallbackType::eFormAssociated: case ElementCallbackType::eFormAssociated:
static_cast<LifecycleFormAssociatedCallback*>(mCallback.get()) static_cast<LifecycleFormAssociatedCallback*>(mCallback.get())
@@ -628,9 +627,7 @@ void CustomElementRegistry::EnqueueLifecycleCallback(
} }
if (aType == ElementCallbackType::eAttributeChanged) { if (aType == ElementCallbackType::eAttributeChanged) {
RefPtr<nsAtom> attrName = NS_Atomize(aArgs.mName); if (!definition->mObservedAttributes.Contains(aArgs.mName)) {
if (definition->mObservedAttributes.IsEmpty() ||
!definition->mObservedAttributes.Contains(attrName)) {
return; return;
} }
} }
@@ -1330,7 +1327,7 @@ void CustomElementRegistry::Upgrade(Element* aElement,
namespaceURI); namespaceURI);
LifecycleCallbackArgs args; LifecycleCallbackArgs args;
args.mName = nsDependentAtomString(attrName); args.mName = attrName;
args.mOldValue = VoidString(); args.mOldValue = VoidString();
args.mNewValue = attrValue; args.mNewValue = attrValue;
args.mNamespaceURI = args.mNamespaceURI =

View File

@@ -51,7 +51,7 @@ enum class ElementCallbackType {
struct LifecycleCallbackArgs { struct LifecycleCallbackArgs {
// Used by the attribute changed callback. // Used by the attribute changed callback.
nsString mName; RefPtr<nsAtom> mName;
nsString mOldValue; nsString mOldValue;
nsString mNewValue; nsString mNewValue;
nsString mNamespaceURI; nsString mNamespaceURI;

View File

@@ -2620,7 +2620,7 @@ nsresult Element::SetAttrAndNotify(
nsNameSpaceManager::GetInstance()->GetNameSpaceURI(aNamespaceID, ns); nsNameSpaceManager::GetInstance()->GetNameSpaceURI(aNamespaceID, ns);
LifecycleCallbackArgs args; LifecycleCallbackArgs args;
aName->ToString(args.mName); args.mName = aName;
if (aModType == MutationEvent_Binding::ADDITION) { if (aModType == MutationEvent_Binding::ADDITION) {
args.mOldValue = VoidString(); args.mOldValue = VoidString();
} else { } else {
@@ -2806,7 +2806,7 @@ void Element::OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
nsAutoString value(aValue.String()); nsAutoString value(aValue.String());
LifecycleCallbackArgs args; LifecycleCallbackArgs args;
aName->ToString(args.mName); args.mName = aName;
args.mOldValue = value; args.mOldValue = value;
args.mNewValue = value; args.mNewValue = value;
args.mNamespaceURI = ns.IsEmpty() ? VoidString() : ns; args.mNamespaceURI = ns.IsEmpty() ? VoidString() : ns;
@@ -2921,7 +2921,7 @@ nsresult Element::UnsetAttr(int32_t aNameSpaceID, nsAtom* aName, bool aNotify) {
nsAutoString ns; nsAutoString ns;
nsNameSpaceManager::GetInstance()->GetNameSpaceURI(aNameSpaceID, ns); nsNameSpaceManager::GetInstance()->GetNameSpaceURI(aNameSpaceID, ns);
LifecycleCallbackArgs args; LifecycleCallbackArgs args;
aName->ToString(args.mName); args.mName = aName;
oldValue.ToString(args.mOldValue); oldValue.ToString(args.mOldValue);
args.mNewValue = VoidString(); args.mNewValue = VoidString();
args.mNamespaceURI = ns.IsEmpty() ? VoidString() : ns; args.mNamespaceURI = ns.IsEmpty() ? VoidString() : ns;