| Index: third_party/WebKit/Source/platform/animation/TimingFunction.cpp
|
| diff --git a/third_party/WebKit/Source/platform/animation/TimingFunction.cpp b/third_party/WebKit/Source/platform/animation/TimingFunction.cpp
|
| index 5749dbc5ea1e48a37b98b90ad695237e2c678a7b..9a5a0d6a49266847a0c769d1356ad278a5646611 100644
|
| --- a/third_party/WebKit/Source/platform/animation/TimingFunction.cpp
|
| +++ b/third_party/WebKit/Source/platform/animation/TimingFunction.cpp
|
| @@ -108,6 +108,27 @@ std::unique_ptr<cc::TimingFunction> StepsTimingFunction::cloneToCC() const {
|
| return m_steps->Clone();
|
| }
|
|
|
| +String FramesTimingFunction::toString() const {
|
| + StringBuilder builder;
|
| + builder.append("frames(");
|
| + builder.append(String::numberToStringECMAScript(this->numberOfFrames()));
|
| + builder.append(")");
|
| + return builder.toString();
|
| +}
|
| +
|
| +void FramesTimingFunction::range(double* minValue, double* maxValue) const {
|
| + *minValue = 0;
|
| + *maxValue = 1;
|
| +}
|
| +
|
| +double FramesTimingFunction::evaluate(double fraction, double) const {
|
| + return m_frames->GetPreciseValue(fraction);
|
| +}
|
| +
|
| +std::unique_ptr<cc::TimingFunction> FramesTimingFunction::cloneToCC() const {
|
| + return m_frames->Clone();
|
| +}
|
| +
|
| PassRefPtr<TimingFunction> createCompositorTimingFunctionFromCC(
|
| const cc::TimingFunction* timingFunction) {
|
| if (!timingFunction)
|
| @@ -168,6 +189,14 @@ bool operator==(const StepsTimingFunction& lhs, const TimingFunction& rhs) {
|
| (lhs.getStepPosition() == stf.getStepPosition());
|
| }
|
|
|
| +bool operator==(const FramesTimingFunction& lhs, const TimingFunction& rhs) {
|
| + if (rhs.getType() != TimingFunction::Type::FRAMES)
|
| + return false;
|
| +
|
| + const FramesTimingFunction& stf = toFramesTimingFunction(rhs);
|
| + return lhs.numberOfFrames() == stf.numberOfFrames();
|
| +}
|
| +
|
| // The generic operator== *must* come after the
|
| // non-generic operator== otherwise it will end up calling itself.
|
| bool operator==(const TimingFunction& lhs, const TimingFunction& rhs) {
|
| @@ -184,6 +213,10 @@ bool operator==(const TimingFunction& lhs, const TimingFunction& rhs) {
|
| const StepsTimingFunction& step = toStepsTimingFunction(lhs);
|
| return (step == rhs);
|
| }
|
| + case TimingFunction::Type::FRAMES: {
|
| + const FramesTimingFunction& frame = toFramesTimingFunction(lhs);
|
| + return (frame == rhs);
|
| + }
|
| default:
|
| ASSERT_NOT_REACHED();
|
| }
|
|
|