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

Side by Side Diff: cc/input/top_controls_manager_unittest.cc

Issue 27710005: cc: Use HighResNow as timebase if it is fast and reliable (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix DCHECK Created 7 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 | « cc/input/top_controls_manager.cc ('k') | cc/layers/delegated_renderer_layer_impl_unittest.cc » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "cc/input/top_controls_manager.h" 5 #include "cc/input/top_controls_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "cc/input/top_controls_manager_client.h" 9 #include "cc/input/top_controls_manager_client.h"
10 #include "cc/layers/layer_impl.h" 10 #include "cc/layers/layer_impl.h"
11 #include "cc/test/fake_impl_proxy.h" 11 #include "cc/test/fake_impl_proxy.h"
12 #include "cc/test/fake_layer_tree_host_impl.h" 12 #include "cc/test/fake_layer_tree_host_impl.h"
13 #include "cc/trees/layer_tree_impl.h" 13 #include "cc/trees/layer_tree_impl.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/gfx/frame_time.h"
15 #include "ui/gfx/vector2d_f.h" 16 #include "ui/gfx/vector2d_f.h"
16 17
17 namespace cc { 18 namespace cc {
18 namespace { 19 namespace {
19 20
20 static const float kTopControlsHeight = 100; 21 static const float kTopControlsHeight = 100;
21 22
22 class MockTopControlsManagerClient : public TopControlsManagerClient { 23 class MockTopControlsManagerClient : public TopControlsManagerClient {
23 public: 24 public:
24 MockTopControlsManagerClient(float top_controls_show_threshold, 25 MockTopControlsManagerClient(float top_controls_show_threshold,
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 manager->ScrollEnd(); 125 manager->ScrollEnd();
125 126
126 manager->ScrollBegin(); 127 manager->ScrollBegin();
127 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 128 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
128 EXPECT_EQ(-85.f, manager->controls_top_offset()); 129 EXPECT_EQ(-85.f, manager->controls_top_offset());
129 EXPECT_EQ(15.f, manager->content_top_offset()); 130 EXPECT_EQ(15.f, manager->content_top_offset());
130 manager->ScrollEnd(); 131 manager->ScrollEnd();
131 132
132 EXPECT_TRUE(manager->animation()); 133 EXPECT_TRUE(manager->animation());
133 134
134 base::TimeTicks time = base::TimeTicks::Now(); 135 base::TimeTicks time = gfx::FrameTime::Now();
135 float previous_offset = manager->controls_top_offset(); 136 float previous_offset = manager->controls_top_offset();
136 while (manager->animation()) { 137 while (manager->animation()) {
137 time = base::TimeDelta::FromMicroseconds(100) + time; 138 time = base::TimeDelta::FromMicroseconds(100) + time;
138 manager->Animate(time); 139 manager->Animate(time);
139 EXPECT_LT(manager->controls_top_offset(), previous_offset); 140 EXPECT_LT(manager->controls_top_offset(), previous_offset);
140 previous_offset = manager->controls_top_offset(); 141 previous_offset = manager->controls_top_offset();
141 } 142 }
142 EXPECT_FALSE(manager->animation()); 143 EXPECT_FALSE(manager->animation());
143 EXPECT_EQ(-100.f, manager->controls_top_offset()); 144 EXPECT_EQ(-100.f, manager->controls_top_offset());
144 EXPECT_EQ(0.f, manager->content_top_offset()); 145 EXPECT_EQ(0.f, manager->content_top_offset());
145 } 146 }
146 147
147 TEST(TopControlsManagerTest, PartialShownShowAnimation) { 148 TEST(TopControlsManagerTest, PartialShownShowAnimation) {
148 MockTopControlsManagerClient client(0.5f, 0.5f); 149 MockTopControlsManagerClient client(0.5f, 0.5f);
149 TopControlsManager* manager = client.manager(); 150 TopControlsManager* manager = client.manager();
150 manager->ScrollBegin(); 151 manager->ScrollBegin();
151 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 152 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
152 EXPECT_EQ(-100.f, manager->controls_top_offset()); 153 EXPECT_EQ(-100.f, manager->controls_top_offset());
153 EXPECT_EQ(0.f, manager->content_top_offset()); 154 EXPECT_EQ(0.f, manager->content_top_offset());
154 manager->ScrollEnd(); 155 manager->ScrollEnd();
155 156
156 manager->ScrollBegin(); 157 manager->ScrollBegin();
157 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); 158 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f));
158 EXPECT_EQ(-30.f, manager->controls_top_offset()); 159 EXPECT_EQ(-30.f, manager->controls_top_offset());
159 EXPECT_EQ(70.f, manager->content_top_offset()); 160 EXPECT_EQ(70.f, manager->content_top_offset());
160 manager->ScrollEnd(); 161 manager->ScrollEnd();
161 162
162 EXPECT_TRUE(manager->animation()); 163 EXPECT_TRUE(manager->animation());
163 164
164 base::TimeTicks time = base::TimeTicks::Now(); 165 base::TimeTicks time = gfx::FrameTime::Now();
165 float previous_offset = manager->controls_top_offset(); 166 float previous_offset = manager->controls_top_offset();
166 while (manager->animation()) { 167 while (manager->animation()) {
167 time = base::TimeDelta::FromMicroseconds(100) + time; 168 time = base::TimeDelta::FromMicroseconds(100) + time;
168 manager->Animate(time); 169 manager->Animate(time);
169 EXPECT_GT(manager->controls_top_offset(), previous_offset); 170 EXPECT_GT(manager->controls_top_offset(), previous_offset);
170 previous_offset = manager->controls_top_offset(); 171 previous_offset = manager->controls_top_offset();
171 } 172 }
172 EXPECT_FALSE(manager->animation()); 173 EXPECT_FALSE(manager->animation());
173 EXPECT_EQ(0.f, manager->controls_top_offset()); 174 EXPECT_EQ(0.f, manager->controls_top_offset());
174 EXPECT_EQ(100.f, manager->content_top_offset()); 175 EXPECT_EQ(100.f, manager->content_top_offset());
175 } 176 }
176 177
177 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { 178 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) {
178 MockTopControlsManagerClient client(0.25f, 0.25f); 179 MockTopControlsManagerClient client(0.25f, 0.25f);
179 TopControlsManager* manager = client.manager(); 180 TopControlsManager* manager = client.manager();
180 181
181 manager->ScrollBegin(); 182 manager->ScrollBegin();
182 183
183 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); 184 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
184 EXPECT_EQ(-20.f, manager->controls_top_offset()); 185 EXPECT_EQ(-20.f, manager->controls_top_offset());
185 EXPECT_EQ(80.f, manager->content_top_offset()); 186 EXPECT_EQ(80.f, manager->content_top_offset());
186 187
187 manager->ScrollEnd(); 188 manager->ScrollEnd();
188 EXPECT_TRUE(manager->animation()); 189 EXPECT_TRUE(manager->animation());
189 190
190 base::TimeTicks time = base::TimeTicks::Now(); 191 base::TimeTicks time = gfx::FrameTime::Now();
191 float previous_offset = manager->controls_top_offset(); 192 float previous_offset = manager->controls_top_offset();
192 while (manager->animation()) { 193 while (manager->animation()) {
193 time = base::TimeDelta::FromMicroseconds(100) + time; 194 time = base::TimeDelta::FromMicroseconds(100) + time;
194 manager->Animate(time); 195 manager->Animate(time);
195 EXPECT_GT(manager->controls_top_offset(), previous_offset); 196 EXPECT_GT(manager->controls_top_offset(), previous_offset);
196 previous_offset = manager->controls_top_offset(); 197 previous_offset = manager->controls_top_offset();
197 } 198 }
198 EXPECT_FALSE(manager->animation()); 199 EXPECT_FALSE(manager->animation());
199 EXPECT_EQ(0.f, manager->controls_top_offset()); 200 EXPECT_EQ(0.f, manager->controls_top_offset());
200 EXPECT_EQ(100.f, manager->content_top_offset()); 201 EXPECT_EQ(100.f, manager->content_top_offset());
201 } 202 }
202 203
203 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { 204 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) {
204 MockTopControlsManagerClient client(0.25f, 0.25f); 205 MockTopControlsManagerClient client(0.25f, 0.25f);
205 TopControlsManager* manager = client.manager(); 206 TopControlsManager* manager = client.manager();
206 207
207 manager->ScrollBegin(); 208 manager->ScrollBegin();
208 209
209 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 210 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
210 EXPECT_EQ(-30.f, manager->controls_top_offset()); 211 EXPECT_EQ(-30.f, manager->controls_top_offset());
211 EXPECT_EQ(70.f, manager->content_top_offset()); 212 EXPECT_EQ(70.f, manager->content_top_offset());
212 213
213 manager->ScrollEnd(); 214 manager->ScrollEnd();
214 EXPECT_TRUE(manager->animation()); 215 EXPECT_TRUE(manager->animation());
215 216
216 base::TimeTicks time = base::TimeTicks::Now(); 217 base::TimeTicks time = gfx::FrameTime::Now();
217 float previous_offset = manager->controls_top_offset(); 218 float previous_offset = manager->controls_top_offset();
218 while (manager->animation()) { 219 while (manager->animation()) {
219 time = base::TimeDelta::FromMicroseconds(100) + time; 220 time = base::TimeDelta::FromMicroseconds(100) + time;
220 manager->Animate(time); 221 manager->Animate(time);
221 EXPECT_LT(manager->controls_top_offset(), previous_offset); 222 EXPECT_LT(manager->controls_top_offset(), previous_offset);
222 previous_offset = manager->controls_top_offset(); 223 previous_offset = manager->controls_top_offset();
223 } 224 }
224 EXPECT_FALSE(manager->animation()); 225 EXPECT_FALSE(manager->animation());
225 EXPECT_EQ(-100.f, manager->controls_top_offset()); 226 EXPECT_EQ(-100.f, manager->controls_top_offset());
226 EXPECT_EQ(0.f, manager->content_top_offset()); 227 EXPECT_EQ(0.f, manager->content_top_offset());
227 } 228 }
228 229
229 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { 230 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) {
230 MockTopControlsManagerClient client(0.25f, 0.25f); 231 MockTopControlsManagerClient client(0.25f, 0.25f);
231 TopControlsManager* manager = client.manager(); 232 TopControlsManager* manager = client.manager();
232 233
233 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); 234 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
234 EXPECT_EQ(-100.f, manager->controls_top_offset()); 235 EXPECT_EQ(-100.f, manager->controls_top_offset());
235 EXPECT_EQ(0.f, manager->content_top_offset()); 236 EXPECT_EQ(0.f, manager->content_top_offset());
236 237
237 manager->ScrollBegin(); 238 manager->ScrollBegin();
238 239
239 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); 240 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f));
240 EXPECT_EQ(-80.f, manager->controls_top_offset()); 241 EXPECT_EQ(-80.f, manager->controls_top_offset());
241 EXPECT_EQ(20.f, manager->content_top_offset()); 242 EXPECT_EQ(20.f, manager->content_top_offset());
242 243
243 manager->ScrollEnd(); 244 manager->ScrollEnd();
244 EXPECT_TRUE(manager->animation()); 245 EXPECT_TRUE(manager->animation());
245 246
246 base::TimeTicks time = base::TimeTicks::Now(); 247 base::TimeTicks time = gfx::FrameTime::Now();
247 float previous_offset = manager->controls_top_offset(); 248 float previous_offset = manager->controls_top_offset();
248 while (manager->animation()) { 249 while (manager->animation()) {
249 time = base::TimeDelta::FromMicroseconds(100) + time; 250 time = base::TimeDelta::FromMicroseconds(100) + time;
250 manager->Animate(time); 251 manager->Animate(time);
251 EXPECT_LT(manager->controls_top_offset(), previous_offset); 252 EXPECT_LT(manager->controls_top_offset(), previous_offset);
252 previous_offset = manager->controls_top_offset(); 253 previous_offset = manager->controls_top_offset();
253 } 254 }
254 EXPECT_FALSE(manager->animation()); 255 EXPECT_FALSE(manager->animation());
255 EXPECT_EQ(-100.f, manager->controls_top_offset()); 256 EXPECT_EQ(-100.f, manager->controls_top_offset());
256 EXPECT_EQ(0.f, manager->content_top_offset()); 257 EXPECT_EQ(0.f, manager->content_top_offset());
257 } 258 }
258 259
259 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { 260 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) {
260 MockTopControlsManagerClient client(0.25f, 0.25f); 261 MockTopControlsManagerClient client(0.25f, 0.25f);
261 TopControlsManager* manager = client.manager(); 262 TopControlsManager* manager = client.manager();
262 263
263 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); 264 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
264 EXPECT_EQ(-100.f, manager->controls_top_offset()); 265 EXPECT_EQ(-100.f, manager->controls_top_offset());
265 EXPECT_EQ(0.f, manager->content_top_offset()); 266 EXPECT_EQ(0.f, manager->content_top_offset());
266 267
267 manager->ScrollBegin(); 268 manager->ScrollBegin();
268 269
269 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); 270 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f));
270 EXPECT_EQ(-70.f, manager->controls_top_offset()); 271 EXPECT_EQ(-70.f, manager->controls_top_offset());
271 EXPECT_EQ(30.f, manager->content_top_offset()); 272 EXPECT_EQ(30.f, manager->content_top_offset());
272 273
273 manager->ScrollEnd(); 274 manager->ScrollEnd();
274 EXPECT_TRUE(manager->animation()); 275 EXPECT_TRUE(manager->animation());
275 276
276 base::TimeTicks time = base::TimeTicks::Now(); 277 base::TimeTicks time = gfx::FrameTime::Now();
277 float previous_offset = manager->controls_top_offset(); 278 float previous_offset = manager->controls_top_offset();
278 while (manager->animation()) { 279 while (manager->animation()) {
279 time = base::TimeDelta::FromMicroseconds(100) + time; 280 time = base::TimeDelta::FromMicroseconds(100) + time;
280 manager->Animate(time); 281 manager->Animate(time);
281 EXPECT_GT(manager->controls_top_offset(), previous_offset); 282 EXPECT_GT(manager->controls_top_offset(), previous_offset);
282 previous_offset = manager->controls_top_offset(); 283 previous_offset = manager->controls_top_offset();
283 } 284 }
284 EXPECT_FALSE(manager->animation()); 285 EXPECT_FALSE(manager->animation());
285 EXPECT_EQ(0.f, manager->controls_top_offset()); 286 EXPECT_EQ(0.f, manager->controls_top_offset());
286 EXPECT_EQ(100.f, manager->content_top_offset()); 287 EXPECT_EQ(100.f, manager->content_top_offset());
287 } 288 }
288 289
289 } // namespace 290 } // namespace
290 } // namespace cc 291 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/top_controls_manager.cc ('k') | cc/layers/delegated_renderer_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698