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 89e998def9fda05f61fc404c2f82caaa17e3c18b..cb01b4974ab056c5ca96998494363c27f03173a8 100644 |
--- a/cc/scrollbar_animation_controller_linear_fade.cc |
+++ b/cc/scrollbar_animation_controller_linear_fade.cc |
@@ -28,34 +28,38 @@ ScrollbarAnimationControllerLinearFade::~ScrollbarAnimationControllerLinearFade( |
{ |
} |
+double ScrollbarAnimationControllerLinearFade::secondsBeforeStart(base::TimeTicks now) const |
+{ |
+ if (m_lastAwakenTime.is_null()) |
+ return -1; |
+ |
+ double delta = (now - m_lastAwakenTime).InSecondsF(); |
+ return std::max(0.0, m_fadeoutDelay - delta); |
+} |
+ |
bool ScrollbarAnimationControllerLinearFade::animate(base::TimeTicks now) |
{ |
float opacity = opacityAtTime(now); |
m_scrollLayer->SetScrollbarOpacity(opacity); |
- return opacity; |
+ if (!opacity) |
+ m_lastAwakenTime = base::TimeTicks(); |
+ return secondsBeforeStart(now) == 0; |
} |
void ScrollbarAnimationControllerLinearFade::didPinchGestureUpdate(base::TimeTicks now) |
{ |
- m_pinchGestureInEffect = true; |
-} |
- |
-void ScrollbarAnimationControllerLinearFade::didPinchGestureEnd(base::TimeTicks now) |
-{ |
- m_pinchGestureInEffect = false; |
m_lastAwakenTime = now; |
+ m_scrollLayer->SetScrollbarOpacity(1); |
} |
void ScrollbarAnimationControllerLinearFade::didUpdateScrollOffset(base::TimeTicks now) |
{ |
m_lastAwakenTime = now; |
+ m_scrollLayer->SetScrollbarOpacity(1); |
} |
float ScrollbarAnimationControllerLinearFade::opacityAtTime(base::TimeTicks now) |
{ |
- if (m_pinchGestureInEffect) |
- return 1; |
- |
if (m_lastAwakenTime.is_null()) |
return 0; |