Index: third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h |
diff --git a/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h b/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h |
index 1763d4648e7db27612ba0319e382fc8aa55a1147..c45d3a08977d988465175d0fa2f52d627f1635a8 100644 |
--- a/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h |
+++ b/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h |
@@ -6,8 +6,8 @@ |
#define InvalidatableInterpolation_h |
#include "core/animation/InterpolationType.h" |
+#include "core/animation/InterpolationTypesMap.h" |
#include "core/animation/PrimitiveInterpolation.h" |
-#include "core/animation/PropertyInterpolationTypesMapping.h" |
#include "core/animation/StyleInterpolation.h" |
#include "core/animation/TypedInterpolationValue.h" |
#include <memory> |
@@ -21,12 +21,10 @@ class CORE_EXPORT InvalidatableInterpolation : public Interpolation { |
public: |
static PassRefPtr<InvalidatableInterpolation> create( |
PropertyHandle property, |
- const InterpolationTypes& interpolationTypes, |
PassRefPtr<PropertySpecificKeyframe> startKeyframe, |
PassRefPtr<PropertySpecificKeyframe> endKeyframe) { |
- return adoptRef(new InvalidatableInterpolation(property, interpolationTypes, |
- std::move(startKeyframe), |
- std::move(endKeyframe))); |
+ return adoptRef(new InvalidatableInterpolation( |
+ property, std::move(startKeyframe), std::move(endKeyframe))); |
} |
PropertyHandle getProperty() const final { return m_property; } |
@@ -40,12 +38,12 @@ class CORE_EXPORT InvalidatableInterpolation : public Interpolation { |
private: |
InvalidatableInterpolation(PropertyHandle property, |
- const InterpolationTypes& interpolationTypes, |
PassRefPtr<PropertySpecificKeyframe> startKeyframe, |
PassRefPtr<PropertySpecificKeyframe> endKeyframe) |
: Interpolation(nullptr, nullptr), |
m_property(property), |
- m_interpolationTypes(interpolationTypes), |
+ m_interpolationTypes(nullptr), |
+ m_interpolationTypesVersion(0), |
m_startKeyframe(startKeyframe), |
m_endKeyframe(endKeyframe), |
m_currentFraction(std::numeric_limits<double>::quiet_NaN()), |
@@ -58,6 +56,7 @@ class CORE_EXPORT InvalidatableInterpolation : public Interpolation { |
const TypedInterpolationValue* ensureValidConversion( |
const InterpolationEnvironment&, |
const UnderlyingValueOwner&) const; |
+ void ensureValidInterpolationTypes(const InterpolationEnvironment&) const; |
void clearConversionCache() const; |
bool isConversionCacheValid(const InterpolationEnvironment&, |
const UnderlyingValueOwner&) const; |
@@ -75,7 +74,8 @@ class CORE_EXPORT InvalidatableInterpolation : public Interpolation { |
double underlyingFraction() const; |
const PropertyHandle m_property; |
- const InterpolationTypes& m_interpolationTypes; |
+ mutable const InterpolationTypes* m_interpolationTypes; |
+ mutable size_t m_interpolationTypesVersion; |
RefPtr<PropertySpecificKeyframe> m_startKeyframe; |
RefPtr<PropertySpecificKeyframe> m_endKeyframe; |
double m_currentFraction; |