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 |