| 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 |