| Index: third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
|
| diff --git a/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h b/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
|
| index 5a74b4be30e4e3ff4ad41752785bbcb3317b5935..76951c1ddb5cdeede1e23c2edc79679a441471f5 100644
|
| --- a/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
|
| +++ b/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef PrimitiveInterpolation_h
|
| #define PrimitiveInterpolation_h
|
|
|
| +#include "core/animation/PairwiseInterpolationValue.h"
|
| #include "core/animation/TypedInterpolationValue.h"
|
| #include "platform/animation/AnimationUtilities.h"
|
| #include "platform/heap/Handle.h"
|
| @@ -38,43 +39,39 @@ class PairwisePrimitiveInterpolation : public PrimitiveInterpolation {
|
| public:
|
| ~PairwisePrimitiveInterpolation() override { }
|
|
|
| - static std::unique_ptr<PairwisePrimitiveInterpolation> create(const InterpolationType& type, std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end, PassRefPtr<NonInterpolableValue> nonInterpolableValue)
|
| + static std::unique_ptr<PairwisePrimitiveInterpolation> create(const InterpolationType& type, PairwiseInterpolationValue&& pairwiseInterpolationValue)
|
| {
|
| - return wrapUnique(new PairwisePrimitiveInterpolation(type, std::move(start), std::move(end), nonInterpolableValue));
|
| + return wrapUnique(new PairwisePrimitiveInterpolation(type, std::move(pairwiseInterpolationValue)));
|
| }
|
|
|
| const InterpolationType& type() const { return m_type; }
|
|
|
| std::unique_ptr<TypedInterpolationValue> initialValue() const
|
| {
|
| - return TypedInterpolationValue::create(m_type, m_start->clone(), m_nonInterpolableValue);
|
| + return TypedInterpolationValue::create(m_type, InterpolationValue(m_pairwise.startInterpolableValue->clone(), m_pairwise.nonInterpolableValue));
|
| }
|
|
|
| -private:
|
| - PairwisePrimitiveInterpolation(const InterpolationType& type, std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end, PassRefPtr<NonInterpolableValue> nonInterpolableValue)
|
| - : m_type(type)
|
| - , m_start(std::move(start))
|
| - , m_end(std::move(end))
|
| - , m_nonInterpolableValue(nonInterpolableValue)
|
| + void interpolateValue(double fraction, std::unique_ptr<TypedInterpolationValue>& result) const final
|
| {
|
| - ASSERT(m_start);
|
| - ASSERT(m_end);
|
| + DCHECK(result);
|
| + DCHECK(&result->type() == &m_type);
|
| + DCHECK(result->getNonInterpolableValue() == m_pairwise.nonInterpolableValue.get());
|
| + m_pairwise.startInterpolableValue->interpolate(
|
| + *m_pairwise.endInterpolableValue, fraction, *result->mutableValue().interpolableValue);
|
| }
|
|
|
| - void interpolateValue(double fraction, std::unique_ptr<TypedInterpolationValue>& result) const final
|
| +private:
|
| + PairwisePrimitiveInterpolation(const InterpolationType& type, PairwiseInterpolationValue&& pairwiseInterpolationValue)
|
| + : m_type(type)
|
| + , m_pairwise(std::move(pairwiseInterpolationValue))
|
| {
|
| - ASSERT(result);
|
| - ASSERT(&result->type() == &m_type);
|
| - ASSERT(result->getNonInterpolableValue() == m_nonInterpolableValue.get());
|
| - m_start->interpolate(*m_end, fraction, *result->mutableValue().interpolableValue);
|
| + DCHECK(m_pairwise);
|
| }
|
|
|
| double interpolateUnderlyingFraction(double start, double end, double fraction) const final { return blend(start, end, fraction); }
|
|
|
| const InterpolationType& m_type;
|
| - std::unique_ptr<InterpolableValue> m_start;
|
| - std::unique_ptr<InterpolableValue> m_end;
|
| - RefPtr<NonInterpolableValue> m_nonInterpolableValue;
|
| + PairwiseInterpolationValue m_pairwise;
|
| };
|
|
|
| // Represents a pair of incompatible keyframes that fall back to 50% flip behaviour eg. "auto" and "0px".
|
|
|