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

Unified Diff: content/child/web_gesture_curve_impl.cc

Issue 1051593003: Refactors code for WebGestureCurve to ui/events/gestures/blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gn Created 5 years, 9 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: content/child/web_gesture_curve_impl.cc
diff --git a/content/child/web_gesture_curve_impl.cc b/content/child/web_gesture_curve_impl.cc
deleted file mode 100644
index da8a18cecaf9e1b34016c612f07ac35af0ac53a1..0000000000000000000000000000000000000000
--- a/content/child/web_gesture_curve_impl.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/web_gesture_curve_impl.h"
-
-#include "base/logging.h"
-#include "base/metrics/histogram.h"
-#include "third_party/WebKit/public/platform/WebFloatSize.h"
-#include "third_party/WebKit/public/platform/WebGestureCurveTarget.h"
-#include "ui/events/gestures/fling_curve.h"
-#include "ui/gfx/geometry/safe_integer_conversions.h"
-#include "ui/gfx/geometry/vector2d.h"
-
-#if defined(OS_ANDROID)
-#include "ui/events/android/scroller.h"
-#endif
-
-using blink::WebGestureCurve;
-
-namespace content {
-namespace {
-
-scoped_ptr<ui::GestureCurve> CreateDefaultPlatformCurve(
- const gfx::Vector2dF& initial_velocity) {
- DCHECK(!initial_velocity.IsZero());
-#if defined(OS_ANDROID)
- auto scroller = make_scoped_ptr(new ui::Scroller(ui::Scroller::Config()));
- scroller->Fling(0,
- 0,
- initial_velocity.x(),
- initial_velocity.y(),
- INT_MIN,
- INT_MAX,
- INT_MIN,
- INT_MAX,
- base::TimeTicks());
- return scroller.Pass();
-#else
- return make_scoped_ptr(
- new ui::FlingCurve(initial_velocity, base::TimeTicks()));
-#endif
-}
-
-} // namespace
-
-// static
-scoped_ptr<WebGestureCurve> WebGestureCurveImpl::CreateFromDefaultPlatformCurve(
- const gfx::Vector2dF& initial_velocity,
- const gfx::Vector2dF& initial_offset,
- bool on_main_thread) {
- return scoped_ptr<WebGestureCurve>(new WebGestureCurveImpl(
- CreateDefaultPlatformCurve(initial_velocity), initial_offset,
- on_main_thread ? ThreadType::MAIN : ThreadType::IMPL));
-}
-
-// static
-scoped_ptr<WebGestureCurve> WebGestureCurveImpl::CreateFromUICurveForTesting(
- scoped_ptr<ui::GestureCurve> curve,
- const gfx::Vector2dF& initial_offset) {
- return scoped_ptr<WebGestureCurve>(
- new WebGestureCurveImpl(curve.Pass(), initial_offset, ThreadType::TEST));
-}
-
-WebGestureCurveImpl::WebGestureCurveImpl(scoped_ptr<ui::GestureCurve> curve,
- const gfx::Vector2dF& initial_offset,
- ThreadType animating_thread_type)
- : curve_(curve.Pass()),
- last_offset_(initial_offset),
- animating_thread_type_(animating_thread_type),
- ticks_since_first_animate_(0),
- first_animate_time_(0),
- last_animate_time_(0) {
-}
-
-WebGestureCurveImpl::~WebGestureCurveImpl() {
- if (ticks_since_first_animate_ <= 1)
- return;
-
- if (last_animate_time_ <= first_animate_time_)
- return;
-
- switch (animating_thread_type_) {
- case ThreadType::MAIN:
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Event.Frequency.Renderer.FlingAnimate",
- gfx::ToRoundedInt(ticks_since_first_animate_ /
- (last_animate_time_ - first_animate_time_)),
- 1, 240, 120);
- break;
- case ThreadType::IMPL:
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Event.Frequency.RendererImpl.FlingAnimate",
- gfx::ToRoundedInt(ticks_since_first_animate_ /
- (last_animate_time_ - first_animate_time_)),
- 1, 240, 120);
- break;
- case ThreadType::TEST:
- break;
- }
-}
-
-bool WebGestureCurveImpl::apply(double time,
- blink::WebGestureCurveTarget* target) {
- // If the fling has yet to start, simply return and report true to prevent
- // fling termination.
- if (time <= 0)
- return true;
-
- if (!first_animate_time_) {
- first_animate_time_ = last_animate_time_ = time;
- } else if (time != last_animate_time_) {
- // Animation can occur multiple times a frame, but with the same timestamp.
- // Suppress recording of such redundant animate calls, avoiding artificially
- // inflated FPS computation.
- last_animate_time_ = time;
- ++ticks_since_first_animate_;
- }
-
- const base::TimeTicks time_ticks =
- base::TimeTicks() + base::TimeDelta::FromSecondsD(time);
- gfx::Vector2dF offset, velocity;
- bool still_active =
- curve_->ComputeScrollOffset(time_ticks, &offset, &velocity);
-
- gfx::Vector2dF delta = offset - last_offset_;
- last_offset_ = offset;
-
- // As successive timestamps can be arbitrarily close (but monotonic!), don't
- // assume that a zero delta means the curve has terminated.
- if (delta.IsZero())
- return still_active;
-
- // scrollBy() could delete this curve if the animation is over, so don't touch
- // any member variables after making that call.
- bool did_scroll = target->scrollBy(blink::WebFloatSize(delta),
- blink::WebFloatSize(velocity));
- return did_scroll && still_active;
-}
-
-} // namespace content

Powered by Google App Engine
This is Rietveld 408576698