| Index: cc/scrollbar_animation_controller_linear_fade.cc
|
| diff --git a/cc/scrollbar_animation_controller_linear_fade.cc b/cc/scrollbar_animation_controller_linear_fade.cc
|
| index eee6b06f81096f8e29f0208bab9e43705fae1620..f4f4acf693011aa4c7eedbfb328aded597e54245 100644
|
| --- a/cc/scrollbar_animation_controller_linear_fade.cc
|
| +++ b/cc/scrollbar_animation_controller_linear_fade.cc
|
| @@ -9,15 +9,15 @@
|
|
|
| namespace cc {
|
|
|
| -scoped_ptr<ScrollbarAnimationControllerLinearFade> ScrollbarAnimationControllerLinearFade::create(LayerImpl* scrollLayer, double fadeoutDelay, double fadeoutLength)
|
| +scoped_ptr<ScrollbarAnimationControllerLinearFade> ScrollbarAnimationControllerLinearFade::create(LayerImpl* scrollLayer, base::TimeDelta fadeoutDelay, base::TimeDelta fadeoutLength)
|
| {
|
| return make_scoped_ptr(new ScrollbarAnimationControllerLinearFade(scrollLayer, fadeoutDelay, fadeoutLength));
|
| }
|
|
|
| -ScrollbarAnimationControllerLinearFade::ScrollbarAnimationControllerLinearFade(LayerImpl* scrollLayer, double fadeoutDelay, double fadeoutLength)
|
| +ScrollbarAnimationControllerLinearFade::ScrollbarAnimationControllerLinearFade(LayerImpl* scrollLayer, base::TimeDelta fadeoutDelay, base::TimeDelta fadeoutLength)
|
| : ScrollbarAnimationController()
|
| , m_scrollLayer(scrollLayer)
|
| - , m_pinchGestureInEffect(false)
|
| + , m_scrollGestureInProgress(false)
|
| , m_fadeoutDelay(fadeoutDelay)
|
| , m_fadeoutLength(fadeoutLength)
|
| {
|
| @@ -27,43 +27,67 @@ ScrollbarAnimationControllerLinearFade::~ScrollbarAnimationControllerLinearFade(
|
| {
|
| }
|
|
|
| +bool ScrollbarAnimationControllerLinearFade::isScrollGestureInProgress() const
|
| +{
|
| + return m_scrollGestureInProgress;
|
| +}
|
| +
|
| +bool ScrollbarAnimationControllerLinearFade::isAnimating() const
|
| +{
|
| + return !m_lastAwakenTime.is_null();
|
| +}
|
| +
|
| +base::TimeDelta ScrollbarAnimationControllerLinearFade::delayBeforeStart(base::TimeTicks now) const
|
| +{
|
| + if (now > m_lastAwakenTime + m_fadeoutDelay)
|
| + return base::TimeDelta();
|
| + return m_fadeoutDelay - (now - m_lastAwakenTime);
|
| +}
|
| +
|
| bool ScrollbarAnimationControllerLinearFade::animate(base::TimeTicks now)
|
| {
|
| float opacity = opacityAtTime(now);
|
| m_scrollLayer->SetScrollbarOpacity(opacity);
|
| - return opacity;
|
| + if (!opacity)
|
| + m_lastAwakenTime = base::TimeTicks();
|
| + return isAnimating() && delayBeforeStart(now) == base::TimeDelta();
|
| }
|
|
|
| -void ScrollbarAnimationControllerLinearFade::didPinchGestureUpdate(base::TimeTicks now)
|
| +void ScrollbarAnimationControllerLinearFade::didScrollGestureBegin()
|
| {
|
| - m_pinchGestureInEffect = true;
|
| + m_scrollLayer->SetScrollbarOpacity(1);
|
| + m_scrollGestureInProgress = true;
|
| + m_lastAwakenTime = base::TimeTicks();
|
| }
|
|
|
| -void ScrollbarAnimationControllerLinearFade::didPinchGestureEnd(base::TimeTicks now)
|
| +void ScrollbarAnimationControllerLinearFade::didScrollGestureEnd(base::TimeTicks now)
|
| {
|
| - m_pinchGestureInEffect = false;
|
| + m_scrollGestureInProgress = false;
|
| m_lastAwakenTime = now;
|
| }
|
|
|
| -void ScrollbarAnimationControllerLinearFade::didUpdateScrollOffset(base::TimeTicks now)
|
| +void ScrollbarAnimationControllerLinearFade::didProgrammaticallyUpdateScroll(base::TimeTicks now)
|
| {
|
| + // Don't set m_scrollGestureInProgress as this scroll is not from a gesture
|
| + // and we won't receive ScrollEnd.
|
| + m_scrollLayer->SetScrollbarOpacity(1);
|
| m_lastAwakenTime = now;
|
| }
|
|
|
| float ScrollbarAnimationControllerLinearFade::opacityAtTime(base::TimeTicks now)
|
| {
|
| - if (m_pinchGestureInEffect)
|
| + if (m_scrollGestureInProgress)
|
| return 1;
|
|
|
| if (m_lastAwakenTime.is_null())
|
| return 0;
|
|
|
| - double delta = (now - m_lastAwakenTime).InSecondsF();
|
| + base::TimeDelta delta = now - m_lastAwakenTime;
|
|
|
| if (delta <= m_fadeoutDelay)
|
| return 1;
|
| if (delta < m_fadeoutDelay + m_fadeoutLength)
|
| - return (m_fadeoutDelay + m_fadeoutLength - delta) / m_fadeoutLength;
|
| + return (m_fadeoutDelay + m_fadeoutLength - delta).InSecondsF() / m_fadeoutLength.InSecondsF();
|
| return 0;
|
| }
|
|
|
|
|