void SVGMPathElement::UpdateHrefTarget(nsIContent* aParent, const nsAString& aHrefStr) { nsCOMPtr<nsIURI> targetURI; nsCOMPtr<nsIURI> baseURI = GetBaseURI(); nsContentUtils::NewURIWithDocumentCharset(getter_AddRefs(targetURI), aHrefStr, OwnerDoc(), baseURI); // Stop observing old target (if any) if (mHrefTarget.get()) { mHrefTarget.get()->RemoveMutationObserver(this); } if (aParent) { // Pass in |aParent| instead of |this| -- first argument is only used // for a call to GetCurrentDoc(), and |this| might not have a current // document yet (if our caller is BindToTree). mHrefTarget.Reset(aParent, targetURI); } else { // if we don't have a parent, then there's no animateMotion element // depending on our target, so there's no point tracking it right now. mHrefTarget.Unlink(); } // Start observing new target (if any) if (mHrefTarget.get()) { mHrefTarget.get()->AddMutationObserver(this); } NotifyParentOfMpathChange(aParent); }
void SVGMPathElement::UnlinkHrefTarget(bool aNotifyParent) { // Stop observing old target (if any) if (mHrefTarget.get()) { mHrefTarget.get()->RemoveMutationObserver(this); } mHrefTarget.Unlink(); if (aNotifyParent) { NotifyParentOfMpathChange(GetParent()); } }
void SVGMPathElement::AttributeChanged(nsIDocument* aDocument, Element* aElement, int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { if (aNameSpaceID == kNameSpaceID_None) { if (aAttribute == nsGkAtoms::d) { NotifyParentOfMpathChange(GetParent()); } } }
void SVGMPathElement::AttributeChanged(Element* aElement, int32_t aNameSpaceID, nsAtom* aAttribute, int32_t aModType, const nsAttrValue* aOldValue) { if (aNameSpaceID == kNameSpaceID_None) { if (aAttribute == nsGkAtoms::d) { NotifyParentOfMpathChange(GetParent()); } } }