OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Tests for the TouchFlingGestureCurve. | |
6 | |
7 #include "content/child/touch_fling_gesture_curve.h" | |
8 | |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "testing/gtest/include/gtest/gtest.h" | |
11 #include "third_party/WebKit/public/platform/WebFloatPoint.h" | |
12 #include "third_party/WebKit/public/platform/WebFloatSize.h" | |
13 #include "third_party/WebKit/public/platform/WebGestureCurve.h" | |
14 #include "third_party/WebKit/public/platform/WebGestureCurveTarget.h" | |
15 #include "third_party/WebKit/public/platform/WebSize.h" | |
16 | |
17 using blink::WebFloatPoint; | |
18 using blink::WebFloatSize; | |
19 using blink::WebGestureCurve; | |
20 using blink::WebGestureCurveTarget; | |
21 using blink::WebSize; | |
22 | |
23 namespace { | |
24 | |
25 class MockGestureCurveTarget : public WebGestureCurveTarget { | |
26 public: | |
27 virtual bool scrollBy(const WebFloatSize& delta, | |
28 const WebFloatSize& velocity) override { | |
29 cumulative_delta_.width += delta.width; | |
30 cumulative_delta_.height += delta.height; | |
31 current_velocity_ = velocity; | |
32 return true; | |
33 } | |
34 | |
35 WebFloatSize cumulative_delta() const { return cumulative_delta_; } | |
36 void resetCumulativeDelta() { cumulative_delta_ = WebFloatSize(); } | |
37 | |
38 WebFloatSize current_velocity() const { return current_velocity_; } | |
39 | |
40 private: | |
41 WebFloatSize cumulative_delta_; | |
42 WebFloatSize current_velocity_; | |
43 }; | |
44 | |
45 } // namespace anonymous | |
46 | |
47 TEST(TouchFlingGestureCurve, flingCurveTouch) | |
48 { | |
49 double initialVelocity = 5000; | |
50 MockGestureCurveTarget target; | |
51 | |
52 scoped_ptr<WebGestureCurve> curve(content::TouchFlingGestureCurve::Create( | |
53 WebFloatPoint(initialVelocity, 0), WebSize())); | |
54 | |
55 // Note: the expectations below are dependent on the curve parameters hard | |
56 // coded into the create call above. | |
57 EXPECT_TRUE(curve->apply(0, &target)); | |
58 EXPECT_TRUE(curve->apply(0.25, &target)); | |
59 EXPECT_NEAR(target.current_velocity().width, 1878, 1); | |
60 EXPECT_EQ(target.current_velocity().height, 0); | |
61 EXPECT_TRUE(curve->apply(0.45f, &target)); // Use non-uniform tick spacing. | |
62 EXPECT_TRUE(curve->apply(1, &target)); | |
63 EXPECT_FALSE(curve->apply(1.5, &target)); | |
64 EXPECT_NEAR(target.cumulative_delta().width, 1193, 1); | |
65 EXPECT_EQ(target.cumulative_delta().height, 0); | |
66 EXPECT_EQ(target.current_velocity().width, 0); | |
67 EXPECT_EQ(target.current_velocity().height, 0); | |
68 } | |
69 | |
OLD | NEW |