Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(85)

Unified Diff: ui/events/gestures/blink/web_gesture_curve_impl.cc

Issue 1251323002: Plumb smooth scrolling in Chromium compositor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/gestures/blink/web_gesture_curve_impl.cc
diff --git a/ui/events/gestures/blink/web_gesture_curve_impl.cc b/ui/events/gestures/blink/web_gesture_curve_impl.cc
index 96cebee462f2c012b0d88505628f3b2c6e575e5b..9eda4ff69f1ea6dfd7c26acd515b6a19343bd16d 100644
--- a/ui/events/gestures/blink/web_gesture_curve_impl.cc
+++ b/ui/events/gestures/blink/web_gesture_curve_impl.cc
@@ -42,6 +42,26 @@ scoped_ptr<GestureCurve> CreateDefaultPlatformCurve(
#endif
}
+scoped_ptr<GestureCurve> CreateSmoothScrollingCurve(float start_x,
+ float start_y,
+ float dx,
+ float dy,
+ base::TimeDelta duration) {
+ DCHECK(duration > base::TimeDelta());
+#if defined(OS_ANDROID)
+ auto scroller = make_scoped_ptr(new Scroller(Scroller::Config()));
+ base::TimeTicks start_time = base::TimeTicks();
+
+ scroller->StartScroll(start_x, start_y, dx, dy, start_time, duration);
+ return scroller.Pass();
+#else
+ float vx = dx / duration.InSecondsF();
jdduke (slow) 2015/07/23 15:32:50 I'd almost rather we NOTREACHED() here and return
+ float vy = dy / duration.InSecondsF();
+ return make_scoped_ptr(
+ new FlingCurve(gfx::Vector2dF(vx, vy), base::TimeTicks()));
+#endif
+}
+
} // namespace
// static
@@ -55,6 +75,20 @@ scoped_ptr<WebGestureCurve> WebGestureCurveImpl::CreateFromDefaultPlatformCurve(
}
// static
+scoped_ptr<WebGestureCurve> WebGestureCurveImpl::CreateFromSmoothScrollingCurve(
+ float start_x,
+ float start_y,
+ float dx,
+ float dy,
+ base::TimeDelta duration,
+ bool on_main_thread) {
+ const gfx::Vector2dF initial_offset(start_x, start_y);
+ return scoped_ptr<WebGestureCurve>(new WebGestureCurveImpl(
+ CreateSmoothScrollingCurve(start_x, start_y, dx, dy, duration),
+ initial_offset, on_main_thread ? ThreadType::MAIN : ThreadType::IMPL));
+}
+
+// static
scoped_ptr<WebGestureCurve> WebGestureCurveImpl::CreateFromUICurveForTesting(
scoped_ptr<GestureCurve> curve,
const gfx::Vector2dF& initial_offset) {

Powered by Google App Engine
This is Rietveld 408576698