Index: third_party/WebKit/Source/core/animation/InterpolationType.h |
diff --git a/third_party/WebKit/Source/core/animation/InterpolationType.h b/third_party/WebKit/Source/core/animation/InterpolationType.h |
index 1a3c02e74248802417957f8df2d765db19ebc580..7a9304ec5610581da672650cada0e2bbfc17ce47 100644 |
--- a/third_party/WebKit/Source/core/animation/InterpolationType.h |
+++ b/third_party/WebKit/Source/core/animation/InterpolationType.h |
@@ -5,18 +5,17 @@ |
#ifndef InterpolationType_h |
#define InterpolationType_h |
-#include "core/animation/InterpolableValue.h" |
#include "core/animation/InterpolationValue.h" |
-#include "core/animation/NonInterpolableValue.h" |
+#include "core/animation/Keyframe.h" |
#include "core/animation/PrimitiveInterpolation.h" |
-#include "core/animation/StringKeyframe.h" |
+#include "core/animation/PropertyHandle.h" |
#include "core/animation/UnderlyingValue.h" |
#include "platform/heap/Handle.h" |
#include "wtf/Allocator.h" |
namespace blink { |
-class StyleResolverState; |
+class InterpolationEnvironment; |
// A singleton that: |
// - Converts from animation keyframe(s) to interpolation compatible representations: maybeConvertPairwise() and maybeConvertSingle() |
@@ -25,7 +24,7 @@ class InterpolationType { |
WTF_MAKE_FAST_ALLOCATED(InterpolationType); |
WTF_MAKE_NONCOPYABLE(InterpolationType); |
public: |
- CSSPropertyID property() const { return m_property; } |
+ PropertyHandle property() const { return m_property; } |
// Represents logic for determining whether a conversion decision is no longer valid given the current environment. |
class ConversionChecker { |
@@ -33,7 +32,7 @@ public: |
WTF_MAKE_NONCOPYABLE(ConversionChecker); |
public: |
virtual ~ConversionChecker() { } |
- virtual bool isValid(const StyleResolverState&, const UnderlyingValue&) const = 0; |
+ virtual bool isValid(const InterpolationEnvironment&, const UnderlyingValue&) const = 0; |
const InterpolationType& type() const { return m_type; } |
DEFINE_INLINE_VIRTUAL_TRACE() { } |
protected: |
@@ -44,30 +43,20 @@ public: |
}; |
using ConversionCheckers = Vector<OwnPtr<ConversionChecker>>; |
- virtual PassOwnPtr<PairwisePrimitiveInterpolation> maybeConvertPairwise(const CSSPropertySpecificKeyframe& startKeyframe, const CSSPropertySpecificKeyframe& endKeyframe, const StyleResolverState* state, const UnderlyingValue& underlyingValue, ConversionCheckers& conversionCheckers) const |
+ virtual PassOwnPtr<PairwisePrimitiveInterpolation> maybeConvertPairwise(const PropertySpecificKeyframe& startKeyframe, const PropertySpecificKeyframe& endKeyframe, const InterpolationEnvironment* environment, const UnderlyingValue& underlyingValue, ConversionCheckers& conversionCheckers) const |
{ |
- OwnPtr<InterpolationValue> startValue = maybeConvertSingle(startKeyframe, state, underlyingValue, conversionCheckers); |
+ OwnPtr<InterpolationValue> startValue = maybeConvertSingle(startKeyframe, environment, underlyingValue, conversionCheckers); |
if (!startValue) |
return nullptr; |
- OwnPtr<InterpolationValue> endValue = maybeConvertSingle(endKeyframe, state, underlyingValue, conversionCheckers); |
+ OwnPtr<InterpolationValue> endValue = maybeConvertSingle(endKeyframe, environment, underlyingValue, conversionCheckers); |
if (!endValue) |
return nullptr; |
return mergeSingleConversions(*startValue, *endValue); |
} |
- virtual PassOwnPtr<InterpolationValue> maybeConvertSingle(const CSSPropertySpecificKeyframe& keyframe, const StyleResolverState* state, const UnderlyingValue& underlyingValue, ConversionCheckers& conversionCheckers) const |
- { |
- const CSSValue* value = keyframe.value(); |
- if (!value) |
- return maybeConvertNeutral(underlyingValue, conversionCheckers); |
- if (value->isInitialValue() || (value->isUnsetValue() && !CSSPropertyMetadata::isInheritedProperty(m_property))) |
- return maybeConvertInitial(); |
- if (value->isInheritedValue() || (value->isUnsetValue() && CSSPropertyMetadata::isInheritedProperty(m_property))) |
- return maybeConvertInherit(state, conversionCheckers); |
- return maybeConvertValue(*value, state, conversionCheckers); |
- } |
+ virtual PassOwnPtr<InterpolationValue> maybeConvertSingle(const PropertySpecificKeyframe&, const InterpolationEnvironment*, const UnderlyingValue&, ConversionCheckers&) const = 0; |
- virtual PassOwnPtr<InterpolationValue> maybeConvertUnderlyingValue(const StyleResolverState&) const = 0; |
+ virtual PassOwnPtr<InterpolationValue> maybeConvertUnderlyingValue(const InterpolationEnvironment&) const = 0; |
virtual void composite(UnderlyingValue& underlyingValue, double underlyingFraction, const InterpolationValue& value) const |
{ |
@@ -76,22 +65,17 @@ public: |
underlyingValue.mutableComponent().interpolableValue->scaleAndAdd(underlyingFraction, value.interpolableValue()); |
} |
- virtual void apply(const InterpolableValue&, const NonInterpolableValue*, StyleResolverState&) const = 0; |
+ virtual void apply(const InterpolableValue&, const NonInterpolableValue*, InterpolationEnvironment&) const = 0; |
// Implement reference equality checking via pointer equality checking as these are singletons. |
bool operator==(const InterpolationType& other) const { return this == &other; } |
bool operator!=(const InterpolationType& other) const { return this != &other; } |
protected: |
- InterpolationType(CSSPropertyID property) |
+ InterpolationType(PropertyHandle property) |
: m_property(property) |
{ } |
- virtual PassOwnPtr<InterpolationValue> maybeConvertNeutral(const UnderlyingValue&, ConversionCheckers&) const { ASSERT_NOT_REACHED(); return nullptr; } |
- virtual PassOwnPtr<InterpolationValue> maybeConvertInitial() const { ASSERT_NOT_REACHED(); return nullptr; } |
- virtual PassOwnPtr<InterpolationValue> maybeConvertInherit(const StyleResolverState*, ConversionCheckers&) const { ASSERT_NOT_REACHED(); return nullptr; } |
- virtual PassOwnPtr<InterpolationValue> maybeConvertValue(const CSSValue& value, const StyleResolverState* state, ConversionCheckers& conversionCheckers) const { ASSERT_NOT_REACHED(); return nullptr; } |
- |
virtual PassOwnPtr<PairwisePrimitiveInterpolation> mergeSingleConversions(InterpolationValue& startValue, InterpolationValue& endValue) const |
{ |
ASSERT(!startValue.nonInterpolableValue()); |
@@ -102,7 +86,7 @@ protected: |
nullptr); |
} |
- const CSSPropertyID m_property; |
+ const PropertyHandle m_property; |
}; |
} // namespace blink |