| Index: Source/core/svg/SVGAElement.cpp
|
| diff --git a/Source/core/svg/SVGAElement.cpp b/Source/core/svg/SVGAElement.cpp
|
| index 2e7d55fa67c7e16c98b3fc8a0acb45a186eb6528..7a37381f818c9a781155de2cb267fbb89b26c584 100644
|
| --- a/Source/core/svg/SVGAElement.cpp
|
| +++ b/Source/core/svg/SVGAElement.cpp
|
| @@ -55,19 +55,19 @@ namespace WebCore {
|
| using namespace HTMLNames;
|
|
|
| // Animated property definitions
|
| -DEFINE_ANIMATED_STRING(SVGAElement, SVGNames::targetAttr, SVGTarget, svgTarget)
|
| -DEFINE_ANIMATED_STRING(SVGAElement, XLinkNames::hrefAttr, Href, href)
|
|
|
| BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGAElement)
|
| - REGISTER_LOCAL_ANIMATED_PROPERTY(svgTarget)
|
| - REGISTER_LOCAL_ANIMATED_PROPERTY(href)
|
| REGISTER_PARENT_ANIMATED_PROPERTIES(SVGGraphicsElement)
|
| END_REGISTER_ANIMATED_PROPERTIES
|
|
|
| inline SVGAElement::SVGAElement(Document& document)
|
| : SVGGraphicsElement(SVGNames::aTag, document)
|
| + , m_svgTarget(SVGAnimatedString::create(this, SVGNames::targetAttr, SVGString::create()))
|
| + , m_href(SVGAnimatedString::create(this, XLinkNames::hrefAttr, SVGString::create()))
|
| {
|
| ScriptWrappable::init(this);
|
| + addToPropertyMap(m_svgTarget);
|
| + addToPropertyMap(m_href);
|
| registerAnimatedPropertiesForSVGAElement();
|
| }
|
|
|
| @@ -104,15 +104,16 @@ void SVGAElement::parseAttribute(const QualifiedName& name, const AtomicString&
|
| return;
|
| }
|
|
|
| - if (name == SVGNames::targetAttr) {
|
| - setSVGTargetBaseValue(value);
|
| - return;
|
| - }
|
| + SVGParsingError parseError = NoError;
|
|
|
| - if (SVGURIReference::parseAttribute(name, value))
|
| - return;
|
| + if (name == SVGNames::targetAttr)
|
| + m_svgTarget->setBaseValueAsString(value, parseError);
|
| + else if (name.matches(XLinkNames::hrefAttr))
|
| + m_href->setBaseValueAsString(value, parseError);
|
| + else
|
| + ASSERT_NOT_REACHED();
|
|
|
| - ASSERT_NOT_REACHED();
|
| + reportAttributeParsingError(parseError, name, value);
|
| }
|
|
|
| void SVGAElement::svgAttributeChanged(const QualifiedName& attrName)
|
| @@ -128,7 +129,7 @@ void SVGAElement::svgAttributeChanged(const QualifiedName& attrName)
|
| // as none of the other properties changes the linking behaviour for our <a> element.
|
| if (SVGURIReference::isKnownAttribute(attrName)) {
|
| bool wasLink = isLink();
|
| - setIsLink(!hrefCurrentValue().isNull());
|
| + setIsLink(!m_href->currentValue()->value().isNull());
|
|
|
| if (wasLink != isLink())
|
| setNeedsStyleRecalc();
|
| @@ -153,7 +154,7 @@ void SVGAElement::defaultEventHandler(Event* event)
|
| }
|
|
|
| if (isLinkClick(event)) {
|
| - String url = stripLeadingAndTrailingHTMLSpaces(hrefCurrentValue());
|
| + String url = stripLeadingAndTrailingHTMLSpaces(m_href->currentValue()->value());
|
|
|
| if (url[0] == '#') {
|
| Element* targetElement = treeScope().getElementById(AtomicString(url.substring(1)));
|
| @@ -167,7 +168,7 @@ void SVGAElement::defaultEventHandler(Event* event)
|
| return;
|
| }
|
|
|
| - AtomicString target(svgTargetCurrentValue());
|
| + AtomicString target(m_svgTarget->currentValue()->value());
|
| if (target.isEmpty() && fastGetAttribute(XLinkNames::showAttr) == "new")
|
| target = AtomicString("_blank", AtomicString::ConstructFromLiteral);
|
| event->setDefaultHandled();
|
|
|