| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2008 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> | 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> |
| 6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 } | 270 } |
| 271 } | 271 } |
| 272 svgRareData()->setWebAnimatedAttributesDirty(false); | 272 svgRareData()->setWebAnimatedAttributesDirty(false); |
| 273 } | 273 } |
| 274 | 274 |
| 275 template<typename T> | 275 template<typename T> |
| 276 static void updateInstancesAnimatedAttribute(SVGElement* element, const Qualifie
dName& attribute, T callback) | 276 static void updateInstancesAnimatedAttribute(SVGElement* element, const Qualifie
dName& attribute, T callback) |
| 277 { | 277 { |
| 278 SVGElement::InstanceUpdateBlocker blocker(element); | 278 SVGElement::InstanceUpdateBlocker blocker(element); |
| 279 for (SVGElement* instance : SVGAnimateElement::findElementInstances(element)
) { | 279 for (SVGElement* instance : SVGAnimateElement::findElementInstances(element)
) { |
| 280 RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> animatedProperty = instance-
>propertyFromAttribute(attribute); | 280 if (SVGAnimatedPropertyBase* animatedProperty = instance->propertyFromAt
tribute(attribute)) { |
| 281 if (animatedProperty) { | |
| 282 callback(*animatedProperty); | 281 callback(*animatedProperty); |
| 283 instance->invalidateSVGAttributes(); | 282 instance->invalidateSVGAttributes(); |
| 284 instance->svgAttributeChanged(attribute); | 283 instance->svgAttributeChanged(attribute); |
| 285 } | 284 } |
| 286 } | 285 } |
| 287 } | 286 } |
| 288 | 287 |
| 289 void SVGElement::setWebAnimatedAttribute(const QualifiedName& attribute, PassRef
PtrWillBeRawPtr<SVGPropertyBase> value) | 288 void SVGElement::setWebAnimatedAttribute(const QualifiedName& attribute, PassRef
PtrWillBeRawPtr<SVGPropertyBase> value) |
| 290 { | 289 { |
| 291 updateInstancesAnimatedAttribute(this, attribute, [&value](SVGAnimatedProper
tyBase& animatedProperty) { | 290 updateInstancesAnimatedAttribute(this, attribute, [&value](SVGAnimatedProper
tyBase& animatedProperty) { |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 ensureSVGRareData()->setCorrespondingElement(correspondingElement); | 627 ensureSVGRareData()->setCorrespondingElement(correspondingElement); |
| 629 } | 628 } |
| 630 | 629 |
| 631 bool SVGElement::inUseShadowTree() const | 630 bool SVGElement::inUseShadowTree() const |
| 632 { | 631 { |
| 633 return correspondingUseElement(); | 632 return correspondingUseElement(); |
| 634 } | 633 } |
| 635 | 634 |
| 636 void SVGElement::parseAttribute(const QualifiedName& name, const AtomicString& o
ldValue, const AtomicString& value) | 635 void SVGElement::parseAttribute(const QualifiedName& name, const AtomicString& o
ldValue, const AtomicString& value) |
| 637 { | 636 { |
| 638 RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> property = propertyFromAttribute
(name); | 637 if (SVGAnimatedPropertyBase* property = propertyFromAttribute(name)) { |
| 639 if (property) { | |
| 640 SVGParsingError parseError = NoError; | 638 SVGParsingError parseError = NoError; |
| 641 property->setBaseValueAsString(value, parseError); | 639 property->setBaseValueAsString(value, parseError); |
| 642 reportAttributeParsingError(parseError, name, value); | 640 reportAttributeParsingError(parseError, name, value); |
| 643 | |
| 644 return; | 641 return; |
| 645 } | 642 } |
| 646 | 643 |
| 647 if (name == HTMLNames::classAttr) { | 644 if (name == HTMLNames::classAttr) { |
| 648 // SVG animation has currently requires special storage of values so we
set | 645 // SVG animation has currently requires special storage of values so we
set |
| 649 // the className here. svgAttributeChanged actually causes the resulting | 646 // the className here. svgAttributeChanged actually causes the resulting |
| 650 // style updates (instead of Element::parseAttribute). We don't | 647 // style updates (instead of Element::parseAttribute). We don't |
| 651 // tell Element about the change to avoid parsing the class list twice | 648 // tell Element about the change to avoid parsing the class list twice |
| 652 SVGParsingError parseError = NoError; | 649 SVGParsingError parseError = NoError; |
| 653 m_className->setBaseValueAsString(value, parseError); | 650 m_className->setBaseValueAsString(value, parseError); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 return AnimatedUnknown; | 737 return AnimatedUnknown; |
| 741 } | 738 } |
| 742 | 739 |
| 743 void SVGElement::addToPropertyMap(PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase
> passProperty) | 740 void SVGElement::addToPropertyMap(PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase
> passProperty) |
| 744 { | 741 { |
| 745 RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> property(passProperty); | 742 RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> property(passProperty); |
| 746 QualifiedName attributeName = property->attributeName(); | 743 QualifiedName attributeName = property->attributeName(); |
| 747 m_attributeToPropertyMap.set(attributeName, property.release()); | 744 m_attributeToPropertyMap.set(attributeName, property.release()); |
| 748 } | 745 } |
| 749 | 746 |
| 750 PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> SVGElement::propertyFromAttribut
e(const QualifiedName& attributeName) | 747 SVGAnimatedPropertyBase* SVGElement::propertyFromAttribute(const QualifiedName&
attributeName) const |
| 751 { | 748 { |
| 752 AttributeToPropertyMap::iterator it = m_attributeToPropertyMap.find<SVGAttri
buteHashTranslator>(attributeName); | 749 AttributeToPropertyMap::const_iterator it = m_attributeToPropertyMap.find<SV
GAttributeHashTranslator>(attributeName); |
| 753 if (it == m_attributeToPropertyMap.end()) | 750 if (it == m_attributeToPropertyMap.end()) |
| 754 return nullptr; | 751 return nullptr; |
| 755 | 752 |
| 756 return it->value; | 753 return it->value.get(); |
| 757 } | 754 } |
| 758 | 755 |
| 759 bool SVGElement::isAnimatableCSSProperty(const QualifiedName& attrName) | 756 bool SVGElement::isAnimatableCSSProperty(const QualifiedName& attrName) |
| 760 { | 757 { |
| 761 return animatedPropertyTypeForCSSAttribute(attrName) != AnimatedUnknown; | 758 return animatedPropertyTypeForCSSAttribute(attrName) != AnimatedUnknown; |
| 762 } | 759 } |
| 763 | 760 |
| 764 bool SVGElement::isPresentationAttribute(const QualifiedName& name) const | 761 bool SVGElement::isPresentationAttribute(const QualifiedName& name) const |
| 765 { | 762 { |
| 766 return cssPropertyIdForSVGAttributeName(name) > 0; | 763 return cssPropertyIdForSVGAttributeName(name) > 0; |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1246 Element::trace(visitor); | 1243 Element::trace(visitor); |
| 1247 } | 1244 } |
| 1248 | 1245 |
| 1249 const AtomicString& SVGElement::eventParameterName() | 1246 const AtomicString& SVGElement::eventParameterName() |
| 1250 { | 1247 { |
| 1251 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt", AtomicString::Con
structFromLiteral)); | 1248 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt", AtomicString::Con
structFromLiteral)); |
| 1252 return evtString; | 1249 return evtString; |
| 1253 } | 1250 } |
| 1254 | 1251 |
| 1255 } // namespace blink | 1252 } // namespace blink |
| OLD | NEW |