Index: third_party/WebKit/Source/core/svg/SVGSVGElement.cpp |
diff --git a/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp b/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp |
index f49fb0848ea6df3310cf5f383ae6a093049e0d27..a08056bfca98312c020b18fb64f8a2c29443c2ca 100644 |
--- a/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp |
+++ b/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp |
@@ -101,10 +101,10 @@ DEFINE_NODE_FACTORY(SVGSVGElement) |
SVGSVGElement::~SVGSVGElement() {} |
-SVGViewSpec* SVGSVGElement::currentView() { |
+SVGViewSpec& SVGSVGElement::ensureViewSpec() { |
if (!m_viewSpec) |
- m_viewSpec = SVGViewSpec::create(this); |
- return m_viewSpec; |
+ m_viewSpec = SVGViewSpec::create(); |
+ return *m_viewSpec; |
} |
float SVGSVGElement::currentScale() const { |
@@ -157,11 +157,10 @@ void SVGSVGElement::updateUserTransform() { |
} |
bool SVGSVGElement::zoomAndPanEnabled() const { |
- const SVGZoomAndPan* currentViewSpec = this; |
+ SVGZoomAndPanType zoomAndPan = this->zoomAndPan(); |
if (m_useCurrentView) |
- currentViewSpec = m_viewSpec; |
- DCHECK(currentViewSpec); |
- return currentViewSpec->zoomAndPan() == SVGZoomAndPanMagnify; |
+ zoomAndPan = m_viewSpec->zoomAndPan(); |
+ return zoomAndPan == SVGZoomAndPanMagnify; |
} |
void SVGSVGElement::parseAttribute(const QualifiedName& name, |
@@ -600,7 +599,7 @@ bool SVGSVGElement::shouldSynthesizeViewBox() const { |
FloatRect SVGSVGElement::currentViewBoxRect() const { |
if (m_useCurrentView) { |
DCHECK(m_viewSpec); |
- return m_viewSpec->viewBox()->currentValue()->value(); |
+ return m_viewSpec->viewBox()->value(); |
} |
FloatRect useViewBox = viewBox()->currentValue()->value(); |
@@ -625,7 +624,7 @@ FloatRect SVGSVGElement::currentViewBoxRect() const { |
SVGPreserveAspectRatio* SVGSVGElement::currentPreserveAspectRatio() const { |
if (m_useCurrentView) { |
DCHECK(m_viewSpec); |
- return m_viewSpec->preserveAspectRatio()->currentValue(); |
+ return m_viewSpec->preserveAspectRatio(); |
} |
if (!viewBox()->currentValue()->isValid() && shouldSynthesizeViewBox()) { |
// If no viewBox is specified and we're embedded through SVGImage, then |
@@ -714,17 +713,16 @@ void SVGSVGElement::setupInitialView(const String& fragmentIdentifier, |
m_useCurrentView = false; |
if (fragmentIdentifier.startsWith("svgView(")) { |
- SVGViewSpec* view = |
- currentView(); // Ensure the SVGViewSpec has been created. |
+ // Ensure the SVGViewSpec has been created. |
+ SVGViewSpec& view = ensureViewSpec(); |
+ view.inheritViewAttributesFromElement(this); |
- view->inheritViewAttributesFromElement(this); |
- |
- if (view->parseViewSpec(fragmentIdentifier)) { |
+ if (view.parseViewSpec(fragmentIdentifier)) { |
UseCounter::count(document(), UseCounter::SVGSVGElementFragmentSVGView); |
m_useCurrentView = true; |
needsViewUpdate = true; |
} else { |
- view->reset(); |
+ view.reset(); |
} |
} else if (isSVGViewElement(anchorNode)) { |
// Spec: If the SVG fragment identifier addresses a 'view' element |
@@ -763,12 +761,12 @@ void SVGSVGElement::setupInitialView(const String& fragmentIdentifier, |
} |
void SVGSVGElement::inheritViewAttributes(SVGViewElement* viewElement) { |
- SVGViewSpec* view = currentView(); |
+ SVGViewSpec& view = ensureViewSpec(); |
m_useCurrentView = true; |
UseCounter::count(document(), |
UseCounter::SVGSVGElementFragmentSVGViewElement); |
- view->inheritViewAttributesFromElement(this); |
- view->inheritViewAttributesFromElement(viewElement); |
+ view.inheritViewAttributesFromElement(this); |
+ view.inheritViewAttributesFromElement(viewElement); |
DCHECK(!m_useCurrentView || m_viewSpec); |
} |