Chromium Code Reviews| Index: content/browser/android/overscroll_glow.cc |
| diff --git a/content/browser/android/overscroll_glow.cc b/content/browser/android/overscroll_glow.cc |
| index c8a972cceb1c304535caaa57c82bde961e0d0ac7..cf2f6f37d75adcad080a0f6d59cfcfe7090fdb94 100644 |
| --- a/content/browser/android/overscroll_glow.cc |
| +++ b/content/browser/android/overscroll_glow.cc |
| @@ -89,7 +89,8 @@ void OverscrollGlow::EnsureResources() { |
| } |
| OverscrollGlow::OverscrollGlow(const SkBitmap& edge, const SkBitmap& glow) |
| - : horizontal_overscroll_enabled_(true), |
| + : enabled_(true), |
|
Ted C
2013/06/21 17:44:12
should this default to false?
|
| + horizontal_overscroll_enabled_(true), |
| vertical_overscroll_enabled_(true), |
| root_layer_(cc::Layer::Create()) { |
| for (size_t i = 0; i < EdgeEffect::EDGE_COUNT; ++i) { |
| @@ -108,6 +109,9 @@ OverscrollGlow::~OverscrollGlow() { |
| void OverscrollGlow::OnOverscrolled(base::TimeTicks current_time, |
| gfx::Vector2dF overscroll, |
| gfx::Vector2dF velocity) { |
| + if (!enabled_) |
| + return; |
| + |
| // The size of the glow determines the relative effect of the inputs; an |
| // empty-sized effect is effectively disabled. |
| if (size_.IsEmpty()) |
| @@ -156,7 +160,7 @@ void OverscrollGlow::OnOverscrolled(base::TimeTicks current_time, |
| } |
| bool OverscrollGlow::Animate(base::TimeTicks current_time) { |
| - if (!IsActive()) |
| + if (!NeedsAnimate()) |
| return false; |
| const gfx::SizeF sizes[EdgeEffect::EDGE_COUNT] = { |
| @@ -171,10 +175,22 @@ bool OverscrollGlow::Animate(base::TimeTicks current_time) { |
| } |
| } |
| - return IsActive(); |
| + return NeedsAnimate(); |
| } |
| -bool OverscrollGlow::IsActive() const { |
| +void OverscrollGlow::SetEnabled(bool enabled) { |
| + if (enabled_ == enabled) |
| + return; |
| + enabled_ = enabled; |
| + if (!enabled_) { |
| + for (size_t i = 0; i < EdgeEffect::EDGE_COUNT; ++i) |
| + edge_effects_[i]->Finish(); |
| + } |
| +} |
| + |
| +bool OverscrollGlow::NeedsAnimate() const { |
| + if (!enabled_) |
| + return false; |
| for (size_t i = 0; i < EdgeEffect::EDGE_COUNT; ++i) { |
| if (!edge_effects_[i]->IsFinished()) |
| return true; |
| @@ -182,11 +198,6 @@ bool OverscrollGlow::IsActive() const { |
| return false; |
| } |
| -void OverscrollGlow::Finish() { |
| - for (size_t i = 0; i < EdgeEffect::EDGE_COUNT; ++i) |
| - edge_effects_[i]->Finish(); |
| -} |
| - |
| void OverscrollGlow::Pull(base::TimeTicks current_time, |
| gfx::Vector2dF overscroll_delta) { |
| overscroll_delta = ZeroSmallComponents(overscroll_delta); |