summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc
diff options
context:
space:
mode:
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.cc17
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 {