| Index: third_party/WebKit/Source/core/animation/KeyframeInterpolation.cpp
|
| diff --git a/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.cpp b/third_party/WebKit/Source/core/animation/KeyframeInterpolation.cpp
|
| similarity index 72%
|
| rename from third_party/WebKit/Source/core/animation/InvalidatableInterpolation.cpp
|
| rename to third_party/WebKit/Source/core/animation/KeyframeInterpolation.cpp
|
| index 7f1b47cf075b3b69e3ec055e37f57e78165e52df..7c4265c539933a99d47a16c800074d260404ed22 100644
|
| --- a/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.cpp
|
| +++ b/third_party/WebKit/Source/core/animation/KeyframeInterpolation.cpp
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "core/animation/InvalidatableInterpolation.h"
|
| +#include "core/animation/KeyframeInterpolation.h"
|
|
|
| #include "core/animation/InterpolationEnvironment.h"
|
| #include "core/animation/StringKeyframe.h"
|
| @@ -11,40 +11,35 @@
|
|
|
| namespace blink {
|
|
|
| -void InvalidatableInterpolation::interpolate(int, double fraction)
|
| +void KeyframeInterpolation::interpolateImpl()
|
| {
|
| - if (fraction == m_currentFraction)
|
| - return;
|
| + DCHECK(m_previousFraction != m_currentFraction);
|
|
|
| - if (m_currentFraction == 0 || m_currentFraction == 1 || fraction == 0 || fraction == 1)
|
| + if (m_previousFraction == 0 || m_previousFraction == 1 || m_currentFraction == 0 || m_currentFraction == 1)
|
| clearCache();
|
|
|
| - m_currentFraction = fraction;
|
| + m_previousFraction = m_currentFraction;
|
| if (m_isCached && m_cachedPairConversion)
|
| - m_cachedPairConversion->interpolateValue(fraction, m_cachedValue);
|
| + m_cachedPairConversion->interpolateValue(m_currentFraction, m_cachedValue);
|
| // We defer the interpolation to ensureValidInterpolation() if m_cachedPairConversion is null.
|
| }
|
|
|
| -std::unique_ptr<PairwisePrimitiveInterpolation> InvalidatableInterpolation::maybeConvertPairwise(const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| +std::unique_ptr<PairwisePrimitiveInterpolation> KeyframeInterpolation::maybeConvertPairwise(const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| {
|
| - ASSERT(m_currentFraction != 0 && m_currentFraction != 1);
|
| + DCHECK(m_currentFraction != 0 && m_currentFraction != 1);
|
| for (const auto& interpolationType : m_interpolationTypes) {
|
| if ((m_startKeyframe->isNeutral() || m_endKeyframe->isNeutral()) && (!underlyingValueOwner || underlyingValueOwner.type() != *interpolationType))
|
| continue;
|
| ConversionCheckers conversionCheckers;
|
| PairwiseInterpolationValue result = interpolationType->maybeConvertPairwise(*m_startKeyframe, *m_endKeyframe, environment, underlyingValueOwner.value(), conversionCheckers);
|
| addConversionCheckers(*interpolationType, conversionCheckers);
|
| - if (result) {
|
| - return PairwisePrimitiveInterpolation::create(*interpolationType,
|
| - std::move(result.startInterpolableValue),
|
| - std::move(result.endInterpolableValue),
|
| - result.nonInterpolableValue.release());
|
| - }
|
| + if (result)
|
| + return PairwisePrimitiveInterpolation::create(*interpolationType, std::move(result));
|
| }
|
| return nullptr;
|
| }
|
|
|
| -std::unique_ptr<TypedInterpolationValue> InvalidatableInterpolation::convertSingleKeyframe(const PropertySpecificKeyframe& keyframe, const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| +std::unique_ptr<TypedInterpolationValue> KeyframeInterpolation::convertSingleKeyframe(const PropertySpecificKeyframe& keyframe, const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| {
|
| if (keyframe.isNeutral() && !underlyingValueOwner)
|
| return nullptr;
|
| @@ -55,13 +50,13 @@ std::unique_ptr<TypedInterpolationValue> InvalidatableInterpolation::convertSing
|
| InterpolationValue result = interpolationType->maybeConvertSingle(keyframe, environment, underlyingValueOwner.value(), conversionCheckers);
|
| addConversionCheckers(*interpolationType, conversionCheckers);
|
| if (result)
|
| - return TypedInterpolationValue::create(*interpolationType, std::move(result.interpolableValue), result.nonInterpolableValue.release());
|
| + return TypedInterpolationValue::create(*interpolationType, std::move(result));
|
| }
|
| - ASSERT(keyframe.isNeutral());
|
| + DCHECK(keyframe.isNeutral());
|
| return nullptr;
|
| }
|
|
|
| -void InvalidatableInterpolation::addConversionCheckers(const InterpolationType& type, ConversionCheckers& conversionCheckers) const
|
| +void KeyframeInterpolation::addConversionCheckers(const InterpolationType& type, ConversionCheckers& conversionCheckers) const
|
| {
|
| for (size_t i = 0; i < conversionCheckers.size(); i++) {
|
| conversionCheckers[i]->setType(type);
|
| @@ -69,27 +64,27 @@ void InvalidatableInterpolation::addConversionCheckers(const InterpolationType&
|
| }
|
| }
|
|
|
| -std::unique_ptr<TypedInterpolationValue> InvalidatableInterpolation::maybeConvertUnderlyingValue(const InterpolationEnvironment& environment) const
|
| +std::unique_ptr<TypedInterpolationValue> KeyframeInterpolation::maybeConvertUnderlyingValue(const InterpolationEnvironment& environment) const
|
| {
|
| for (const auto& interpolationType : m_interpolationTypes) {
|
| InterpolationValue result = interpolationType->maybeConvertUnderlyingValue(environment);
|
| if (result)
|
| - return TypedInterpolationValue::create(*interpolationType, std::move(result.interpolableValue), result.nonInterpolableValue.release());
|
| + return TypedInterpolationValue::create(*interpolationType, std::move(result));
|
| }
|
| return nullptr;
|
| }
|
|
|
| -bool InvalidatableInterpolation::dependsOnUnderlyingValue() const
|
| +bool KeyframeInterpolation::dependsOnUnderlyingValue() const
|
| {
|
| return (m_startKeyframe->underlyingFraction() != 0 && m_currentFraction != 1) || (m_endKeyframe->underlyingFraction() != 0 && m_currentFraction != 0);
|
| }
|
|
|
| -bool InvalidatableInterpolation::isNeutralKeyframeActive() const
|
| +bool KeyframeInterpolation::isNeutralKeyframeActive() const
|
| {
|
| return (m_startKeyframe->isNeutral() && m_currentFraction != 1) || (m_endKeyframe->isNeutral() && m_currentFraction != 0);
|
| }
|
|
|
| -void InvalidatableInterpolation::clearCache() const
|
| +void KeyframeInterpolation::clearCache() const
|
| {
|
| m_isCached = false;
|
| m_cachedPairConversion.reset();
|
| @@ -97,7 +92,7 @@ void InvalidatableInterpolation::clearCache() const
|
| m_cachedValue.reset();
|
| }
|
|
|
| -bool InvalidatableInterpolation::isCacheValid(const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| +bool KeyframeInterpolation::isCacheValid(const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| {
|
| if (!m_isCached)
|
| return false;
|
| @@ -115,9 +110,9 @@ bool InvalidatableInterpolation::isCacheValid(const InterpolationEnvironment& en
|
| return true;
|
| }
|
|
|
| -const TypedInterpolationValue* InvalidatableInterpolation::ensureValidInterpolation(const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| +const TypedInterpolationValue* KeyframeInterpolation::ensureValidInterpolation(const InterpolationEnvironment& environment, const UnderlyingValueOwner& underlyingValueOwner) const
|
| {
|
| - ASSERT(!std::isnan(m_currentFraction));
|
| + DCHECK(!std::isnan(m_currentFraction));
|
| if (isCacheValid(environment, underlyingValueOwner))
|
| return m_cachedValue.get();
|
| clearCache();
|
| @@ -141,7 +136,7 @@ const TypedInterpolationValue* InvalidatableInterpolation::ensureValidInterpolat
|
| return m_cachedValue.get();
|
| }
|
|
|
| -void InvalidatableInterpolation::setFlagIfInheritUsed(InterpolationEnvironment& environment) const
|
| +void KeyframeInterpolation::setFlagIfInheritUsed(InterpolationEnvironment& environment) const
|
| {
|
| if (!m_property.isCSSProperty() && !m_property.isPresentationAttribute())
|
| return;
|
| @@ -155,7 +150,7 @@ void InvalidatableInterpolation::setFlagIfInheritUsed(InterpolationEnvironment&
|
| }
|
| }
|
|
|
| -double InvalidatableInterpolation::underlyingFraction() const
|
| +double KeyframeInterpolation::underlyingFraction() const
|
| {
|
| if (m_currentFraction == 0)
|
| return m_startKeyframe->underlyingFraction();
|
| @@ -164,14 +159,14 @@ double InvalidatableInterpolation::underlyingFraction() const
|
| return m_cachedPairConversion->interpolateUnderlyingFraction(m_startKeyframe->underlyingFraction(), m_endKeyframe->underlyingFraction(), m_currentFraction);
|
| }
|
|
|
| -void InvalidatableInterpolation::applyStack(const ActiveInterpolations& interpolations, InterpolationEnvironment& environment)
|
| +void KeyframeInterpolation::applyStack(const ActiveInterpolations& interpolations, InterpolationEnvironment& environment)
|
| {
|
| - ASSERT(!interpolations.isEmpty());
|
| + DCHECK(!interpolations.isEmpty());
|
| size_t startingIndex = 0;
|
|
|
| // Compute the underlying value to composite onto.
|
| UnderlyingValueOwner underlyingValueOwner;
|
| - const InvalidatableInterpolation& firstInterpolation = toInvalidatableInterpolation(*interpolations.at(startingIndex));
|
| + const KeyframeInterpolation& firstInterpolation = toKeyframeInterpolation(*interpolations.at(startingIndex));
|
| if (firstInterpolation.dependsOnUnderlyingValue()) {
|
| underlyingValueOwner.set(firstInterpolation.maybeConvertUnderlyingValue(environment));
|
| } else {
|
| @@ -191,8 +186,8 @@ void InvalidatableInterpolation::applyStack(const ActiveInterpolations& interpol
|
| // Composite interpolations onto the underlying value.
|
| bool shouldApply = false;
|
| for (size_t i = startingIndex; i < interpolations.size(); i++) {
|
| - const InvalidatableInterpolation& currentInterpolation = toInvalidatableInterpolation(*interpolations.at(i));
|
| - ASSERT(currentInterpolation.dependsOnUnderlyingValue());
|
| + const KeyframeInterpolation& currentInterpolation = toKeyframeInterpolation(*interpolations.at(i));
|
| + DCHECK(currentInterpolation.dependsOnUnderlyingValue());
|
| const TypedInterpolationValue* currentValue = currentInterpolation.ensureValidInterpolation(environment, underlyingValueOwner);
|
| if (!currentValue)
|
| continue;
|
|
|