| Index: cc/animation/keyframed_animation_curve.cc | 
| diff --git a/cc/animation/keyframed_animation_curve.cc b/cc/animation/keyframed_animation_curve.cc | 
| index a6dc8c537e63fc1e33ed421e4b5925f3cb8ea8af..9642329ebe7728ea158789e4d5befe443d547e13 100644 | 
| --- a/cc/animation/keyframed_animation_curve.cc | 
| +++ b/cc/animation/keyframed_animation_curve.cc | 
| @@ -5,6 +5,7 @@ | 
| #include <algorithm> | 
|  | 
| #include "cc/animation/keyframed_animation_curve.h" | 
| +#include "cc/base/time_util.h" | 
| #include "ui/gfx/animation/tween.h" | 
| #include "ui/gfx/geometry/box_f.h" | 
|  | 
| @@ -30,16 +31,18 @@ void InsertKeyframe(scoped_ptr<KeyframeType> keyframe, | 
| } | 
|  | 
| template <typename KeyframeType> | 
| -double TransformedAnimationTime( | 
| +base::TimeDelta TransformedAnimationTime( | 
| const ScopedPtrVector<KeyframeType>& keyframes, | 
| const scoped_ptr<TimingFunction>& timing_function, | 
| -    double time) { | 
| +    base::TimeDelta time) { | 
| if (timing_function) { | 
| -    double start_time = keyframes.front()->Time(); | 
| -    double duration = keyframes.back()->Time() - start_time; | 
| -    double progress = (time - start_time) / duration; | 
| +    base::TimeDelta start_time = keyframes.front()->Time(); | 
| +    base::TimeDelta duration = | 
| +        keyframes.back()->Time() - keyframes.front()->Time(); | 
| +    double progress = TimeUtil::Divide(time - start_time, duration); | 
|  | 
| -    time = timing_function->GetValue(progress) * duration + start_time; | 
| +    time = TimeUtil::Scale(duration, timing_function->GetValue(progress)) + | 
| +           start_time; | 
| } | 
|  | 
| return time; | 
| @@ -47,7 +50,7 @@ double TransformedAnimationTime( | 
|  | 
| template <typename KeyframeType> | 
| size_t GetActiveKeyframe(const ScopedPtrVector<KeyframeType>& keyframes, | 
| -                         double time) { | 
| +                         base::TimeDelta time) { | 
| DCHECK_GE(keyframes.size(), 2ul); | 
| size_t i = 0; | 
| for (; i < keyframes.size() - 2; ++i) {  // Last keyframe is never active. | 
| @@ -61,10 +64,11 @@ size_t GetActiveKeyframe(const ScopedPtrVector<KeyframeType>& keyframes, | 
| template <typename KeyframeType> | 
| double TransformedKeyframeProgress( | 
| const ScopedPtrVector<KeyframeType>& keyframes, | 
| -    double time, | 
| +    base::TimeDelta time, | 
| size_t i) { | 
| -  double progress = (time - keyframes[i]->Time()) / | 
| -                    (keyframes[i + 1]->Time() - keyframes[i]->Time()); | 
| +  double progress = | 
| +      TimeUtil::Divide(time - keyframes[i]->Time(), | 
| +                       keyframes[i + 1]->Time() - keyframes[i]->Time()); | 
|  | 
| if (keyframes[i]->timing_function()) { | 
| progress = keyframes[i]->timing_function()->GetValue(progress); | 
| @@ -75,29 +79,30 @@ double TransformedKeyframeProgress( | 
|  | 
| }  // namespace | 
|  | 
| -Keyframe::Keyframe(double time, scoped_ptr<TimingFunction> timing_function) | 
| -    : time_(time), | 
| -      timing_function_(timing_function.Pass()) {} | 
| +Keyframe::Keyframe(base::TimeDelta time, | 
| +                   scoped_ptr<TimingFunction> timing_function) | 
| +    : time_(time), timing_function_(timing_function.Pass()) { | 
| +} | 
|  | 
| Keyframe::~Keyframe() {} | 
|  | 
| -double Keyframe::Time() const { | 
| +base::TimeDelta Keyframe::Time() const { | 
| return time_; | 
| } | 
|  | 
| scoped_ptr<ColorKeyframe> ColorKeyframe::Create( | 
| -    double time, | 
| +    base::TimeDelta time, | 
| SkColor value, | 
| scoped_ptr<TimingFunction> timing_function) { | 
| return make_scoped_ptr( | 
| new ColorKeyframe(time, value, timing_function.Pass())); | 
| } | 
|  | 
| -ColorKeyframe::ColorKeyframe(double time, | 
| +ColorKeyframe::ColorKeyframe(base::TimeDelta time, | 
| SkColor value, | 
| scoped_ptr<TimingFunction> timing_function) | 
| -    : Keyframe(time, timing_function.Pass()), | 
| -      value_(value) {} | 
| +    : Keyframe(time, timing_function.Pass()), value_(value) { | 
| +} | 
|  | 
| ColorKeyframe::~ColorKeyframe() {} | 
|  | 
| @@ -111,18 +116,18 @@ scoped_ptr<ColorKeyframe> ColorKeyframe::Clone() const { | 
| } | 
|  | 
| scoped_ptr<FloatKeyframe> FloatKeyframe::Create( | 
| -    double time, | 
| +    base::TimeDelta time, | 
| float value, | 
| scoped_ptr<TimingFunction> timing_function) { | 
| return make_scoped_ptr( | 
| new FloatKeyframe(time, value, timing_function.Pass())); | 
| } | 
|  | 
| -FloatKeyframe::FloatKeyframe(double time, | 
| +FloatKeyframe::FloatKeyframe(base::TimeDelta time, | 
| float value, | 
| scoped_ptr<TimingFunction> timing_function) | 
| -    : Keyframe(time, timing_function.Pass()), | 
| -      value_(value) {} | 
| +    : Keyframe(time, timing_function.Pass()), value_(value) { | 
| +} | 
|  | 
| FloatKeyframe::~FloatKeyframe() {} | 
|  | 
| @@ -138,18 +143,18 @@ scoped_ptr<FloatKeyframe> FloatKeyframe::Clone() const { | 
| } | 
|  | 
| scoped_ptr<TransformKeyframe> TransformKeyframe::Create( | 
| -    double time, | 
| +    base::TimeDelta time, | 
| const TransformOperations& value, | 
| scoped_ptr<TimingFunction> timing_function) { | 
| return make_scoped_ptr( | 
| new TransformKeyframe(time, value, timing_function.Pass())); | 
| } | 
|  | 
| -TransformKeyframe::TransformKeyframe(double time, | 
| +TransformKeyframe::TransformKeyframe(base::TimeDelta time, | 
| const TransformOperations& value, | 
| scoped_ptr<TimingFunction> timing_function) | 
| -    : Keyframe(time, timing_function.Pass()), | 
| -      value_(value) {} | 
| +    : Keyframe(time, timing_function.Pass()), value_(value) { | 
| +} | 
|  | 
| TransformKeyframe::~TransformKeyframe() {} | 
|  | 
| @@ -165,18 +170,18 @@ scoped_ptr<TransformKeyframe> TransformKeyframe::Clone() const { | 
| } | 
|  | 
| scoped_ptr<FilterKeyframe> FilterKeyframe::Create( | 
| -    double time, | 
| +    base::TimeDelta time, | 
| const FilterOperations& value, | 
| scoped_ptr<TimingFunction> timing_function) { | 
| return make_scoped_ptr( | 
| new FilterKeyframe(time, value, timing_function.Pass())); | 
| } | 
|  | 
| -FilterKeyframe::FilterKeyframe(double time, | 
| +FilterKeyframe::FilterKeyframe(base::TimeDelta time, | 
| const FilterOperations& value, | 
| scoped_ptr<TimingFunction> timing_function) | 
| -    : Keyframe(time, timing_function.Pass()), | 
| -      value_(value) {} | 
| +    : Keyframe(time, timing_function.Pass()), value_(value) { | 
| +} | 
|  | 
| FilterKeyframe::~FilterKeyframe() {} | 
|  | 
| @@ -206,8 +211,7 @@ void KeyframedColorAnimationCurve::AddKeyframe( | 
| } | 
|  | 
| base::TimeDelta KeyframedColorAnimationCurve::Duration() const { | 
| -  return base::TimeDelta::FromSecondsD(keyframes_.back()->Time() - | 
| -                                       keyframes_.front()->Time()); | 
| +  return keyframes_.back()->Time() - keyframes_.front()->Time(); | 
| } | 
|  | 
| scoped_ptr<AnimationCurve> KeyframedColorAnimationCurve::Clone() const { | 
| @@ -222,7 +226,7 @@ scoped_ptr<AnimationCurve> KeyframedColorAnimationCurve::Clone() const { | 
| return to_return.Pass(); | 
| } | 
|  | 
| -SkColor KeyframedColorAnimationCurve::GetValue(double t) const { | 
| +SkColor KeyframedColorAnimationCurve::GetValue(base::TimeDelta t) const { | 
| if (t <= keyframes_.front()->Time()) | 
| return keyframes_.front()->Value(); | 
|  | 
| @@ -254,8 +258,7 @@ void KeyframedFloatAnimationCurve::AddKeyframe( | 
| } | 
|  | 
| base::TimeDelta KeyframedFloatAnimationCurve::Duration() const { | 
| -  return base::TimeDelta::FromSecondsD(keyframes_.back()->Time() - | 
| -                                       keyframes_.front()->Time()); | 
| +  return keyframes_.back()->Time() - keyframes_.front()->Time(); | 
| } | 
|  | 
| scoped_ptr<AnimationCurve> KeyframedFloatAnimationCurve::Clone() const { | 
| @@ -270,7 +273,7 @@ scoped_ptr<AnimationCurve> KeyframedFloatAnimationCurve::Clone() const { | 
| return to_return.Pass(); | 
| } | 
|  | 
| -float KeyframedFloatAnimationCurve::GetValue(double t) const { | 
| +float KeyframedFloatAnimationCurve::GetValue(base::TimeDelta t) const { | 
| if (t <= keyframes_.front()->Time()) | 
| return keyframes_.front()->Value(); | 
|  | 
| @@ -300,8 +303,7 @@ void KeyframedTransformAnimationCurve::AddKeyframe( | 
| } | 
|  | 
| base::TimeDelta KeyframedTransformAnimationCurve::Duration() const { | 
| -  return base::TimeDelta::FromSecondsD(keyframes_.back()->Time() - | 
| -                                       keyframes_.front()->Time()); | 
| +  return keyframes_.back()->Time() - keyframes_.front()->Time(); | 
| } | 
|  | 
| scoped_ptr<AnimationCurve> KeyframedTransformAnimationCurve::Clone() const { | 
| @@ -316,7 +318,8 @@ scoped_ptr<AnimationCurve> KeyframedTransformAnimationCurve::Clone() const { | 
| return to_return.Pass(); | 
| } | 
|  | 
| -gfx::Transform KeyframedTransformAnimationCurve::GetValue(double t) const { | 
| +gfx::Transform KeyframedTransformAnimationCurve::GetValue( | 
| +    base::TimeDelta t) const { | 
| if (t <= keyframes_.front()->Time()) | 
| return keyframes_.front()->Value().Apply(); | 
|  | 
| @@ -412,8 +415,7 @@ void KeyframedFilterAnimationCurve::AddKeyframe( | 
| } | 
|  | 
| base::TimeDelta KeyframedFilterAnimationCurve::Duration() const { | 
| -  return base::TimeDelta::FromSecondsD(keyframes_.back()->Time() - | 
| -                                       keyframes_.front()->Time()); | 
| +  return keyframes_.back()->Time() - keyframes_.front()->Time(); | 
| } | 
|  | 
| scoped_ptr<AnimationCurve> KeyframedFilterAnimationCurve::Clone() const { | 
| @@ -428,7 +430,8 @@ scoped_ptr<AnimationCurve> KeyframedFilterAnimationCurve::Clone() const { | 
| return to_return.Pass(); | 
| } | 
|  | 
| -FilterOperations KeyframedFilterAnimationCurve::GetValue(double t) const { | 
| +FilterOperations KeyframedFilterAnimationCurve::GetValue( | 
| +    base::TimeDelta t) const { | 
| if (t <= keyframes_.front()->Time()) | 
| return keyframes_.front()->Value(); | 
|  | 
|  |