diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc index 96045735027..3c96ac2b33e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc @@ -73,7 +73,7 @@ SVGRadialGradientElement::SVGRadialGradientElement(Document& document) AddToPropertyMap(fr_); } -void SVGRadialGradientElement::Trace(blink::Visitor* visitor) { +void SVGRadialGradientElement::Trace(Visitor* visitor) { visitor->Trace(cx_); visitor->Trace(cy_); visitor->Trace(r_); @@ -105,7 +105,6 @@ LayoutObject* SVGRadialGradientElement::CreateLayoutObject(const ComputedStyle&, static void SetGradientAttributes(const SVGGradientElement& element, RadialGradientAttributes& attributes, bool is_radial) { - element.SynchronizeAnimatedSVGAttribute(AnyQName()); element.CollectCommonAttributes(attributes); if (!is_radial) @@ -131,8 +130,8 @@ static void SetGradientAttributes(const SVGGradientElement& element, attributes.SetFr(radial.fr()->CurrentValue()); } -bool SVGRadialGradientElement::CollectGradientAttributes( - RadialGradientAttributes& attributes) { +void SVGRadialGradientElement::CollectGradientAttributes( + RadialGradientAttributes& attributes) const { DCHECK(GetLayoutObject()); VisitedSet visited; @@ -144,10 +143,12 @@ bool SVGRadialGradientElement::CollectGradientAttributes( visited.insert(current); current = current->ReferencedElement(); - if (!current || visited.Contains(current)) + // Ignore the referenced gradient element if it is not attached. + if (!current || !current->GetLayoutObject()) + break; + // Cycle detection. + if (visited.Contains(current)) break; - if (!current->GetLayoutObject()) - return false; } // Handle default values for fx/fy @@ -156,8 +157,6 @@ bool SVGRadialGradientElement::CollectGradientAttributes( if (!attributes.HasFy()) attributes.SetFy(attributes.Cy()); - - return true; } bool SVGRadialGradientElement::SelfHasRelativeLengths() const { |