Merge from Chromium at DEPS revision 251904
This commit was generated by merge_to_master.py.
Change-Id: I8ca36eee41eba7e9a56d6728a9d19e5883d7058c
diff --git a/Source/core/svg/SVGAnimationElement.h b/Source/core/svg/SVGAnimationElement.h
index 087529f..bec165a 100644
--- a/Source/core/svg/SVGAnimationElement.h
+++ b/Source/core/svg/SVGAnimationElement.h
@@ -26,10 +26,10 @@
#define SVGAnimationElement_h
#include "core/svg/SVGAnimatedBoolean.h"
-#include "core/svg/SVGExternalResourcesRequired.h"
#include "core/svg/SVGTests.h"
#include "core/svg/animation/SVGSMILElement.h"
#include "platform/animation/UnitBezier.h"
+#include "wtf/Functional.h"
namespace WebCore {
@@ -43,11 +43,10 @@
PathAnimation // Used by AnimateMotion.
};
-// If we have 'currentColor' or 'inherit' as animation value, we need to grab
-// the value during the animation since the value can be animated itself.
+// If we have 'inherit' as animation value, we need to grab the value
+// during the animation since the value can be animated itself.
enum AnimatedPropertyValueType {
RegularPropertyValue,
- CurrentColorValue,
InheritValue
};
@@ -63,8 +62,7 @@
class SVGAnimatedType;
class SVGAnimationElement : public SVGSMILElement,
- public SVGTests,
- public SVGExternalResourcesRequired {
+ public SVGTests {
public:
// SVGAnimationElement
float getStartTime() const;
@@ -94,17 +92,24 @@
AnimatedPropertyValueType fromPropertyValueType() const { return m_fromPropertyValueType; }
AnimatedPropertyValueType toPropertyValueType() const { return m_toPropertyValueType; }
+ // FIXME: In C++11, remove this as we can use default template argument.
template<typename AnimatedType>
void adjustForInheritance(AnimatedType (*parseTypeFromString)(SVGAnimationElement*, const String&),
AnimatedPropertyValueType valueType, AnimatedType& animatedType, SVGElement* contextElement)
{
+ ASSERT(parseTypeFromString);
+ adjustForInheritance<AnimatedType, AnimatedType (*)(SVGAnimationElement*, const String&)>(parseTypeFromString, valueType, animatedType, contextElement);
+ }
+
+ template<typename AnimatedType, typename ParseTypeFromStringType>
+ void adjustForInheritance(ParseTypeFromStringType parseTypeFromString, AnimatedPropertyValueType valueType, AnimatedType& animatedType, SVGElement* contextElement)
+ {
if (valueType != InheritValue)
return;
// Replace 'inherit' by its computed property value.
- ASSERT(parseTypeFromString);
String typeString;
adjustForInheritance(contextElement, attributeName(), typeString);
- animatedType = (*parseTypeFromString)(this, typeString);
+ animatedType = parseTypeFromString(this, typeString);
}
template<typename AnimatedType>
@@ -165,7 +170,7 @@
SVGAnimationElement(const QualifiedName&, Document&);
void computeCSSPropertyValue(SVGElement*, CSSPropertyID, String& value);
- virtual void determinePropertyValueTypes(const String& from, const String& to);
+ void determinePropertyValueTypes(const String& from, const String& to);
bool isSupportedAttribute(const QualifiedName&);
virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
@@ -182,8 +187,6 @@
String byValue() const;
String fromValue() const;
- String targetAttributeBaseValue();
-
// from SVGSMILElement
virtual void startedActiveInterval() OVERRIDE;
virtual void updateAnimation(float percent, unsigned repeat, SVGSMILElement* resultElement) OVERRIDE;
@@ -219,18 +222,11 @@
float calculatePercentForFromTo(float percent) const;
unsigned calculateKeyTimesIndex(float percent) const;
- void applyAnimatedValue(ShouldApplyAnimation, SVGElement* targetElement, const QualifiedName& attributeName, SVGAnimatedType*);
void adjustForInheritance(SVGElement* targetElement, const QualifiedName& attributeName, String&);
BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGAnimationElement)
- DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
END_DECLARE_ANIMATED_PROPERTIES
- // SVGTests
- virtual void synchronizeRequiredFeatures() { SVGTests::synchronizeRequiredFeatures(this); }
- virtual void synchronizeRequiredExtensions() { SVGTests::synchronizeRequiredExtensions(this); }
- virtual void synchronizeSystemLanguage() { SVGTests::synchronizeSystemLanguage(this); }
-
void setCalcMode(const AtomicString&);
bool m_animationValid;