NS_IMETHODIMP SVGFEImageFrame::AttributeChanged(int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { SVGFEImageElement *element = static_cast<SVGFEImageElement*>(mContent); if (element->AttributeAffectsRendering(aNameSpaceID, aAttribute)) { nsSVGEffects::InvalidateRenderingObservers(this); } if (aNameSpaceID == kNameSpaceID_XLink && aAttribute == nsGkAtoms::href) { // Prevent setting image.src by exiting early if (nsContentUtils::IsImageSrcSetDisabled()) { return NS_OK; } if (element->mStringAttributes[SVGFEImageElement::HREF].IsExplicitlySet()) { element->LoadSVGImage(true, true); } else { element->CancelImageRequests(true); } } return SVGFEImageFrameBase::AttributeChanged(aNameSpaceID, aAttribute, aModType); }
nsresult SVGFEImageFrame::AttributeChanged(int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { SVGFEImageElement *element = static_cast<SVGFEImageElement*>(mContent); if (element->AttributeAffectsRendering(aNameSpaceID, aAttribute)) { MOZ_ASSERT(GetParent()->GetType() == nsGkAtoms::svgFilterFrame, "Observers observe the filter, so that's what we must invalidate"); nsSVGEffects::InvalidateDirectRenderingObservers(GetParent()); } if ((aNameSpaceID == kNameSpaceID_XLink || aNameSpaceID == kNameSpaceID_None) && aAttribute == nsGkAtoms::href) { bool hrefIsSet = element->mStringAttributes[SVGFEImageElement::HREF].IsExplicitlySet() || element->mStringAttributes[SVGFEImageElement::XLINK_HREF] .IsExplicitlySet(); if (hrefIsSet) { element->LoadSVGImage(true, true); } else { element->CancelImageRequests(true); } } return nsFrame::AttributeChanged(aNameSpaceID, aAttribute, aModType); }