/* static */ EffectSet* EffectSet::GetOrCreateEffectSet(dom::Element* aElement, nsCSSPseudoElements::Type aPseudoType) { EffectSet* effectSet = GetEffectSet(aElement, aPseudoType); if (effectSet) { return effectSet; } nsIAtom* propName = GetEffectSetPropertyAtom(aPseudoType); effectSet = new EffectSet(); nsresult rv = aElement->SetProperty(propName, effectSet, &EffectSet::PropertyDtor, true); if (NS_FAILED(rv)) { NS_WARNING("SetProperty failed"); // The set must be destroyed via PropertyDtor, otherwise // mCalledPropertyDtor assertion is triggered in destructor. EffectSet::PropertyDtor(aElement, propName, effectSet, nullptr); return nullptr; } aElement->SetMayHaveAnimations(); return effectSet; }
/* static */ EffectSet* EffectSet::GetEffectSet(const nsIFrame* aFrame) { Maybe<NonOwningAnimationTarget> target = EffectCompositor::GetAnimationElementAndPseudoForFrame(aFrame); if (!target) { return nullptr; } return GetEffectSet(target->mElement, target->mPseudoType); }