void DOMSVGPointList::Clear(ErrorResult& aError) { if (IsAnimValList()) { aError.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR); return; } if (LengthNoFlush() > 0) { AutoChangePointListNotifier notifier(this); // DOM list items that are to be removed must be removed before we change // the internal list, otherwise they wouldn't be able to copy their // internal counterparts' values! InternalListWillChangeTo(SVGPointList()); // clears mItems if (!AttrIsAnimating()) { // The anim val list is in sync with the base val list DOMSVGPointList *animList = GetDOMWrapperIfExists(InternalAList().GetAnimValKey()); if (animList) { animList->InternalListWillChangeTo(SVGPointList()); // clears its mItems } } InternalList().Clear(); } }
void SVGAnimatedPointList::ClearBaseValue() { // We must send these notifications *before* changing mBaseVal! (See above.) DOMSVGPointList *baseValWrapper = DOMSVGPointList::GetDOMWrapperIfExists(GetBaseValKey()); if (baseValWrapper) { baseValWrapper->InternalListWillChangeTo(SVGPointList()); } if (!IsAnimating()) { // DOM anim val wraps our base val too! DOMSVGPointList *animValWrapper = DOMSVGPointList::GetDOMWrapperIfExists(GetAnimValKey()); if (animValWrapper) { animValWrapper->InternalListWillChangeTo(SVGPointList()); } } mBaseVal.Clear(); // Caller notifies }