nsresult SVGViewFrame::AttributeChanged(int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { // Ignore zoomAndPan as it does not cause the <svg> element to re-render if (aNameSpaceID == kNameSpaceID_None && (aAttribute == nsGkAtoms::preserveAspectRatio || aAttribute == nsGkAtoms::viewBox || aAttribute == nsGkAtoms::viewTarget)) { nsSVGOuterSVGFrame *outerSVGFrame = nsSVGUtils::GetOuterSVGFrame(this); NS_ASSERTION(outerSVGFrame->GetContent()->IsSVG(nsGkAtoms::svg), "Expecting an <svg> element"); SVGSVGElement* svgElement = static_cast<SVGSVGElement*>(outerSVGFrame->GetContent()); nsAutoString viewID; mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::id, viewID); if (svgElement->IsOverriddenBy(viewID)) { // We're the view that's providing overrides, so pretend that the frame // we're overriding was updated. outerSVGFrame->AttributeChanged(aNameSpaceID, aAttribute, aModType); } } return SVGViewFrameBase::AttributeChanged(aNameSpaceID, aAttribute, aModType); }