Index: third_party/WebKit/Source/core/svg/SVGAnimatedHref.cpp |
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedHref.cpp b/third_party/WebKit/Source/core/svg/SVGAnimatedHref.cpp |
index 9202a54f3fae2f588013ed2524254ae642cb1f65..6c5b73fa5abc9b619c1219a5f5d8ea7ddec0c220 100644 |
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedHref.cpp |
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedHref.cpp |
@@ -18,21 +18,19 @@ PassRefPtrWillBeRawPtr<SVGAnimatedHref> SVGAnimatedHref::create(SVGElement* cont |
DEFINE_TRACE(SVGAnimatedHref) |
{ |
- visitor->trace(m_href); |
visitor->trace(m_xlinkHref); |
SVGAnimatedString::trace(visitor); |
} |
SVGAnimatedHref::SVGAnimatedHref(SVGElement* contextElement) |
- : SVGAnimatedString(contextElement, SVGNames::hrefAttr, nullptr) |
- , m_href(SVGAnimatedString::create(contextElement, SVGNames::hrefAttr, SVGString::create())) |
+ : SVGAnimatedString(contextElement, SVGNames::hrefAttr, SVGString::create()) |
, m_xlinkHref(SVGAnimatedString::create(contextElement, XLinkNames::hrefAttr, SVGString::create())) |
{ |
} |
void SVGAnimatedHref::addToPropertyMap(SVGElement* element) |
{ |
- element->addToPropertyMap(m_href); |
+ element->addToPropertyMap(this); |
element->addToPropertyMap(m_xlinkHref); |
} |
@@ -41,83 +39,48 @@ bool SVGAnimatedHref::isKnownAttribute(const QualifiedName& attrName) |
return attrName.matches(SVGNames::hrefAttr) || attrName.matches(XLinkNames::hrefAttr); |
} |
-SVGPropertyBase* SVGAnimatedHref::currentValueBase() |
+SVGString* SVGAnimatedHref::currentValue() |
{ |
- ASSERT_NOT_REACHED(); |
- return nullptr; |
+ return backingString()->SVGAnimatedString::currentValue(); |
} |
-const SVGPropertyBase& SVGAnimatedHref::baseValueBase() const |
+const SVGString* SVGAnimatedHref::currentValue() const |
{ |
- ASSERT_NOT_REACHED(); |
- return SVGAnimatedString::baseValueBase(); |
-} |
- |
-bool SVGAnimatedHref::isAnimating() const |
-{ |
- ASSERT_NOT_REACHED(); |
- return false; |
-} |
- |
-PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGAnimatedHref::createAnimatedValue() |
-{ |
- ASSERT_NOT_REACHED(); |
- return nullptr; |
-} |
- |
-void SVGAnimatedHref::setAnimatedValue(PassRefPtrWillBeRawPtr<SVGPropertyBase>) |
-{ |
- ASSERT_NOT_REACHED(); |
-} |
- |
-void SVGAnimatedHref::animationEnded() |
-{ |
- ASSERT_NOT_REACHED(); |
-} |
- |
-SVGParsingError SVGAnimatedHref::setBaseValueAsString(const String&) |
-{ |
- ASSERT_NOT_REACHED(); |
- return SVGParseStatus::NoError; |
-} |
- |
-bool SVGAnimatedHref::needsSynchronizeAttribute() |
-{ |
- ASSERT_NOT_REACHED(); |
- return false; |
-} |
- |
-void SVGAnimatedHref::synchronizeAttribute() |
-{ |
- ASSERT_NOT_REACHED(); |
+ return backingString()->SVGAnimatedString::currentValue(); |
} |
String SVGAnimatedHref::baseVal() |
{ |
UseCounter::count(contextElement()->document(), UseCounter::SVGHrefBaseVal); |
- return backingHref()->baseVal(); |
+ return backingString()->SVGAnimatedString::baseVal(); |
} |
void SVGAnimatedHref::setBaseVal(const String& value, ExceptionState& exceptionState) |
{ |
UseCounter::count(contextElement()->document(), UseCounter::SVGHrefBaseVal); |
- backingHref()->setBaseVal(value, exceptionState); |
+ return backingString()->SVGAnimatedString::setBaseVal(value, exceptionState); |
} |
String SVGAnimatedHref::animVal() |
{ |
UseCounter::count(contextElement()->document(), UseCounter::SVGHrefAnimVal); |
// We should only animate (non-XLink) 'href'. |
- return m_href->animVal(); |
+ return SVGAnimatedString::animVal(); |
+} |
+ |
+SVGAnimatedString* SVGAnimatedHref::backingString() |
+{ |
+ return useXLink() ? m_xlinkHref.get() : this; |
+} |
+ |
+const SVGAnimatedString* SVGAnimatedHref::backingString() const |
+{ |
+ return useXLink() ? m_xlinkHref.get() : this; |
} |
-SVGAnimatedString* SVGAnimatedHref::backingHref() const |
+bool SVGAnimatedHref::useXLink() const |
{ |
- if (m_href->isSpecified()) |
- return m_href.get(); |
- if (m_xlinkHref->isSpecified()) |
- return m_xlinkHref.get(); |
- return m_href.get(); |
+ return !SVGAnimatedString::isSpecified() && m_xlinkHref->isSpecified(); |
} |
} // namespace blink |