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..3488f7df42ecef10ff31671de32288ae824df5b6 100644 |
--- a/content/browser/android/overscroll_glow.cc |
+++ b/content/browser/android/overscroll_glow.cc |
@@ -75,21 +75,24 @@ gfx::Vector2dF ZeroSmallComponents(gfx::Vector2dF vector) { |
} // namespace |
-scoped_ptr<OverscrollGlow> OverscrollGlow::Create() { |
+scoped_ptr<OverscrollGlow> OverscrollGlow::Create(bool enabled) { |
const SkBitmap& edge = g_overscroll_resources.Get().edge_bitmap(); |
const SkBitmap& glow = g_overscroll_resources.Get().glow_bitmap(); |
if (edge.isNull() || glow.isNull()) |
return scoped_ptr<OverscrollGlow>(); |
- return make_scoped_ptr(new OverscrollGlow(edge, glow)); |
+ return make_scoped_ptr(new OverscrollGlow(enabled, edge, glow)); |
} |
void OverscrollGlow::EnsureResources() { |
g_overscroll_resources.Get(); |
} |
-OverscrollGlow::OverscrollGlow(const SkBitmap& edge, const SkBitmap& glow) |
- : horizontal_overscroll_enabled_(true), |
+OverscrollGlow::OverscrollGlow(bool enabled, |
+ const SkBitmap& edge, |
+ const SkBitmap& glow) |
+ : enabled_(enabled), |
+ 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 +111,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 +162,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 +177,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 +200,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); |