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

Side by Side Diff: ui/events/android/scroller_unittest.cc

Issue 634373003: Consolidate content fling implementations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix win build Created 6 years, 2 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 unified diff | Download patch
« no previous file with comments | « ui/events/android/scroller.cc ('k') | ui/events/events.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/time/time.h" 5 #include "base/time/time.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "ui/gfx/android/scroller.h" 7 #include "ui/events/android/scroller.h"
8 8
9 namespace gfx { 9 namespace ui {
10
11 namespace { 10 namespace {
12 11
13 const float kDefaultStartX = 7.f; 12 const float kDefaultStartX = 7.f;
14 const float kDefaultStartY = 25.f; 13 const float kDefaultStartY = 25.f;
15 const float kDefaultDeltaX = -20.f; 14 const float kDefaultDeltaX = -20.f;
16 const float kDefaultDeltaY = 73.f; 15 const float kDefaultDeltaY = 73.f;
17 const float kDefaultVelocityX = -350.f; 16 const float kDefaultVelocityX = -350.f;
18 const float kDefaultVelocityY = 220.f; 17 const float kDefaultVelocityY = 220.f;
19 const float kEpsilon = 1e-3f; 18 const float kEpsilon = 1e-3f;
20 19
(...skipping 20 matching lines...) Expand all
41 EXPECT_EQ(kDefaultStartY, scroller.GetStartY()); 40 EXPECT_EQ(kDefaultStartY, scroller.GetStartY());
42 EXPECT_EQ(kDefaultStartX, scroller.GetCurrX()); 41 EXPECT_EQ(kDefaultStartX, scroller.GetCurrX());
43 EXPECT_EQ(kDefaultStartY, scroller.GetCurrY()); 42 EXPECT_EQ(kDefaultStartY, scroller.GetCurrY());
44 EXPECT_EQ(kDefaultStartX + kDefaultDeltaX, scroller.GetFinalX()); 43 EXPECT_EQ(kDefaultStartX + kDefaultDeltaX, scroller.GetFinalX());
45 EXPECT_EQ(kDefaultStartY + kDefaultDeltaY, scroller.GetFinalY()); 44 EXPECT_EQ(kDefaultStartY + kDefaultDeltaY, scroller.GetFinalY());
46 EXPECT_FALSE(scroller.IsFinished()); 45 EXPECT_FALSE(scroller.IsFinished());
47 EXPECT_EQ(base::TimeDelta(), scroller.GetTimePassed()); 46 EXPECT_EQ(base::TimeDelta(), scroller.GetTimePassed());
48 47
49 // Advance halfway through the scroll. 48 // Advance halfway through the scroll.
50 const base::TimeDelta scroll_duration = scroller.GetDuration(); 49 const base::TimeDelta scroll_duration = scroller.GetDuration();
51 scroller.ComputeScrollOffset(start_time + scroll_duration / 2); 50 gfx::Vector2dF offset, velocity;
51 EXPECT_TRUE(scroller.ComputeScrollOffset(
52 start_time + scroll_duration / 2, &offset, &velocity));
52 53
53 // Ensure we've moved in the direction of the delta, but have yet to reach 54 // Ensure we've moved in the direction of the delta, but have yet to reach
54 // the target. 55 // the target.
55 EXPECT_GT(kDefaultStartX, scroller.GetCurrX()); 56 EXPECT_GT(kDefaultStartX, offset.x());
56 EXPECT_LT(kDefaultStartY, scroller.GetCurrY()); 57 EXPECT_LT(kDefaultStartY, offset.y());
57 EXPECT_LT(scroller.GetFinalX(), scroller.GetCurrX()); 58 EXPECT_LT(scroller.GetFinalX(), offset.x());
58 EXPECT_GT(scroller.GetFinalY(), scroller.GetCurrY()); 59 EXPECT_GT(scroller.GetFinalY(), offset.y());
59 EXPECT_FALSE(scroller.IsFinished()); 60 EXPECT_FALSE(scroller.IsFinished());
60 61
61 // Ensure our velocity is non-zero and in the same direction as the delta. 62 // Ensure our velocity is non-zero and in the same direction as the delta.
62 EXPECT_GT(0.f, scroller.GetCurrVelocityX() * kDefaultDeltaX); 63 EXPECT_GT(0.f, velocity.x() * kDefaultDeltaX);
63 EXPECT_GT(0.f, scroller.GetCurrVelocityY() * kDefaultDeltaY); 64 EXPECT_GT(0.f, velocity.y() * kDefaultDeltaY);
64 EXPECT_TRUE(scroller.IsScrollingInDirection(kDefaultDeltaX, kDefaultDeltaY)); 65 EXPECT_TRUE(scroller.IsScrollingInDirection(kDefaultDeltaX, kDefaultDeltaY));
65 66
66 // Repeated offset computations at the same timestamp should yield identical 67 // Repeated offset computations at the same timestamp should yield identical
67 // results. 68 // results.
68 float curr_x = scroller.GetCurrX(); 69 float curr_x = offset.x();
69 float curr_y = scroller.GetCurrY(); 70 float curr_y = offset.y();
70 float curr_velocity_x = scroller.GetCurrVelocityX(); 71 float curr_velocity_x = velocity.x();
71 float curr_velocity_y = scroller.GetCurrVelocityY(); 72 float curr_velocity_y = velocity.y();
72 scroller.ComputeScrollOffset(start_time + scroll_duration / 2); 73 EXPECT_TRUE(scroller.ComputeScrollOffset(
73 EXPECT_EQ(curr_x, scroller.GetCurrX()); 74 start_time + scroll_duration / 2, &offset, &velocity));
74 EXPECT_EQ(curr_y, scroller.GetCurrY()); 75 EXPECT_EQ(curr_x, offset.x());
75 EXPECT_EQ(curr_velocity_x, scroller.GetCurrVelocityX()); 76 EXPECT_EQ(curr_y, offset.y());
76 EXPECT_EQ(curr_velocity_y, scroller.GetCurrVelocityY()); 77 EXPECT_EQ(curr_velocity_x, velocity.x());
78 EXPECT_EQ(curr_velocity_y, velocity.y());
77 79
78 // Advance to the end. 80 // Advance to the end.
79 scroller.ComputeScrollOffset(start_time + scroll_duration); 81 EXPECT_FALSE(scroller.ComputeScrollOffset(
80 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX()); 82 start_time + scroll_duration, &offset, &velocity));
81 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY()); 83 EXPECT_EQ(scroller.GetFinalX(), offset.x());
84 EXPECT_EQ(scroller.GetFinalY(), offset.y());
82 EXPECT_TRUE(scroller.IsFinished()); 85 EXPECT_TRUE(scroller.IsFinished());
83 EXPECT_EQ(scroll_duration, scroller.GetTimePassed()); 86 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
84 EXPECT_NEAR(0.f, scroller.GetCurrVelocityX(), kEpsilon); 87 EXPECT_NEAR(0.f, velocity.x(), kEpsilon);
85 EXPECT_NEAR(0.f, scroller.GetCurrVelocityY(), kEpsilon); 88 EXPECT_NEAR(0.f, velocity.y(), kEpsilon);
86 89
87 // Try to advance further; nothing should change. 90 // Try to advance further; nothing should change.
88 scroller.ComputeScrollOffset(start_time + scroll_duration * 2); 91 EXPECT_FALSE(scroller.ComputeScrollOffset(
89 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX()); 92 start_time + scroll_duration * 2, &offset, &velocity));
90 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY()); 93 EXPECT_EQ(scroller.GetFinalX(), offset.x());
94 EXPECT_EQ(scroller.GetFinalY(), offset.y());
91 EXPECT_TRUE(scroller.IsFinished()); 95 EXPECT_TRUE(scroller.IsFinished());
92 EXPECT_EQ(scroll_duration, scroller.GetTimePassed()); 96 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
93 } 97 }
94 98
95 TEST_F(ScrollerTest, Fling) { 99 TEST_F(ScrollerTest, Fling) {
96 Scroller scroller(DefaultConfig()); 100 Scroller scroller(DefaultConfig());
97 base::TimeTicks start_time = base::TimeTicks::Now(); 101 base::TimeTicks start_time = base::TimeTicks::Now();
98 102
99 // Start a fling and verify initialized values. 103 // Start a fling and verify initialized values.
100 scroller.Fling(kDefaultStartX, 104 scroller.Fling(kDefaultStartX,
(...skipping 10 matching lines...) Expand all
111 EXPECT_EQ(kDefaultStartY, scroller.GetStartY()); 115 EXPECT_EQ(kDefaultStartY, scroller.GetStartY());
112 EXPECT_EQ(kDefaultStartX, scroller.GetCurrX()); 116 EXPECT_EQ(kDefaultStartX, scroller.GetCurrX());
113 EXPECT_EQ(kDefaultStartY, scroller.GetCurrY()); 117 EXPECT_EQ(kDefaultStartY, scroller.GetCurrY());
114 EXPECT_GT(kDefaultStartX, scroller.GetFinalX()); 118 EXPECT_GT(kDefaultStartX, scroller.GetFinalX());
115 EXPECT_LT(kDefaultStartY, scroller.GetFinalY()); 119 EXPECT_LT(kDefaultStartY, scroller.GetFinalY());
116 EXPECT_FALSE(scroller.IsFinished()); 120 EXPECT_FALSE(scroller.IsFinished());
117 EXPECT_EQ(base::TimeDelta(), scroller.GetTimePassed()); 121 EXPECT_EQ(base::TimeDelta(), scroller.GetTimePassed());
118 122
119 // Advance halfway through the fling. 123 // Advance halfway through the fling.
120 const base::TimeDelta scroll_duration = scroller.GetDuration(); 124 const base::TimeDelta scroll_duration = scroller.GetDuration();
121 scroller.ComputeScrollOffset(start_time + scroll_duration / 2); 125 gfx::Vector2dF offset, velocity;
126 scroller.ComputeScrollOffset(
127 start_time + scroll_duration / 2, &offset, &velocity);
122 128
123 // Ensure we've moved in the direction of the velocity, but have yet to reach 129 // Ensure we've moved in the direction of the velocity, but have yet to reach
124 // the target. 130 // the target.
125 EXPECT_GT(kDefaultStartX, scroller.GetCurrX()); 131 EXPECT_GT(kDefaultStartX, offset.x());
126 EXPECT_LT(kDefaultStartY, scroller.GetCurrY()); 132 EXPECT_LT(kDefaultStartY, offset.y());
127 EXPECT_LT(scroller.GetFinalX(), scroller.GetCurrX()); 133 EXPECT_LT(scroller.GetFinalX(), offset.x());
128 EXPECT_GT(scroller.GetFinalY(), scroller.GetCurrY()); 134 EXPECT_GT(scroller.GetFinalY(), offset.y());
129 EXPECT_FALSE(scroller.IsFinished()); 135 EXPECT_FALSE(scroller.IsFinished());
130 136
131 // Ensure our velocity is non-zero and in the same direction as the original 137 // Ensure our velocity is non-zero and in the same direction as the original
132 // velocity. 138 // velocity.
133 EXPECT_LT(0.f, scroller.GetCurrVelocityX() * kDefaultVelocityX); 139 EXPECT_LT(0.f, velocity.x() * kDefaultVelocityX);
134 EXPECT_LT(0.f, scroller.GetCurrVelocityY() * kDefaultVelocityY); 140 EXPECT_LT(0.f, velocity.y() * kDefaultVelocityY);
135 EXPECT_TRUE( 141 EXPECT_TRUE(
136 scroller.IsScrollingInDirection(kDefaultVelocityX, kDefaultVelocityY)); 142 scroller.IsScrollingInDirection(kDefaultVelocityX, kDefaultVelocityY));
137 143
138 // Repeated offset computations at the same timestamp should yield identical 144 // Repeated offset computations at the same timestamp should yield identical
139 // results. 145 // results.
140 float curr_x = scroller.GetCurrX(); 146 float curr_x = offset.x();
141 float curr_y = scroller.GetCurrY(); 147 float curr_y = offset.y();
142 float curr_velocity_x = scroller.GetCurrVelocityX(); 148 float curr_velocity_x = velocity.x();
143 float curr_velocity_y = scroller.GetCurrVelocityY(); 149 float curr_velocity_y = velocity.y();
144 scroller.ComputeScrollOffset(start_time + scroll_duration / 2); 150 EXPECT_TRUE(scroller.ComputeScrollOffset(
145 EXPECT_EQ(curr_x, scroller.GetCurrX()); 151 start_time + scroll_duration / 2, &offset, &velocity));
146 EXPECT_EQ(curr_y, scroller.GetCurrY()); 152 EXPECT_EQ(curr_x, offset.x());
147 EXPECT_EQ(curr_velocity_x, scroller.GetCurrVelocityX()); 153 EXPECT_EQ(curr_y, offset.y());
148 EXPECT_EQ(curr_velocity_y, scroller.GetCurrVelocityY()); 154 EXPECT_EQ(curr_velocity_x, velocity.x());
155 EXPECT_EQ(curr_velocity_y, velocity.y());
149 156
150 // Advance to the end. 157 // Advance to the end.
151 scroller.ComputeScrollOffset(start_time + scroll_duration); 158 EXPECT_FALSE(scroller.ComputeScrollOffset(
152 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX()); 159 start_time + scroll_duration, &offset, &velocity));
153 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY()); 160 EXPECT_EQ(scroller.GetFinalX(), offset.x());
161 EXPECT_EQ(scroller.GetFinalY(), offset.y());
154 EXPECT_TRUE(scroller.IsFinished()); 162 EXPECT_TRUE(scroller.IsFinished());
155 EXPECT_EQ(scroll_duration, scroller.GetTimePassed()); 163 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
156 EXPECT_NEAR(0.f, scroller.GetCurrVelocityX(), kEpsilon); 164 EXPECT_NEAR(0.f, velocity.x(), kEpsilon);
157 EXPECT_NEAR(0.f, scroller.GetCurrVelocityY(), kEpsilon); 165 EXPECT_NEAR(0.f, velocity.y(), kEpsilon);
158 166
159 // Try to advance further; nothing should change. 167 // Try to advance further; nothing should change.
160 scroller.ComputeScrollOffset(start_time + scroll_duration * 2); 168 EXPECT_FALSE(scroller.ComputeScrollOffset(
161 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX()); 169 start_time + scroll_duration * 2, &offset, &velocity));
162 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY()); 170 EXPECT_EQ(scroller.GetFinalX(), offset.x());
171 EXPECT_EQ(scroller.GetFinalY(), offset.y());
163 EXPECT_TRUE(scroller.IsFinished()); 172 EXPECT_TRUE(scroller.IsFinished());
164 EXPECT_EQ(scroll_duration, scroller.GetTimePassed()); 173 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
165 } 174 }
166 175
167 } // namespace gfx 176 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/android/scroller.cc ('k') | ui/events/events.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698