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

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

Issue 2443613002: Rename classes related to top controls (Closed)
Patch Set: fix test Created 4 years, 1 month 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_client.h ('k') | cc/input/top_controls_state.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "cc/input/top_controls_manager.h"
6
7 #include <algorithm>
8 #include <cmath>
9 #include <memory>
10
11 #include "base/logging.h"
12 #include "base/time/time.h"
13 #include "cc/input/top_controls_manager_client.h"
14 #include "cc/layers/layer_impl.h"
15 #include "cc/test/fake_impl_task_runner_provider.h"
16 #include "cc/test/fake_layer_tree_host_impl.h"
17 #include "cc/test/test_shared_bitmap_manager.h"
18 #include "cc/test/test_task_graph_runner.h"
19 #include "cc/trees/layer_tree_impl.h"
20 #include "testing/gtest/include/gtest/gtest.h"
21 #include "ui/gfx/geometry/vector2d_f.h"
22
23 namespace cc {
24 namespace {
25
26 class MockTopControlsManagerClient : public TopControlsManagerClient {
27 public:
28 MockTopControlsManagerClient(float top_controls_height,
29 float top_controls_show_threshold,
30 float top_controls_hide_threshold)
31 : host_impl_(&task_runner_provider_,
32 &shared_bitmap_manager_,
33 &task_graph_runner_),
34 redraw_needed_(false),
35 update_draw_properties_needed_(false),
36 bottom_controls_height_(0.f),
37 top_controls_shown_ratio_(1.f),
38 top_controls_height_(top_controls_height),
39 top_controls_show_threshold_(top_controls_show_threshold),
40 top_controls_hide_threshold_(top_controls_hide_threshold) {
41 active_tree_ = base::MakeUnique<LayerTreeImpl>(
42 &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedTopControls,
43 new SyncedElasticOverscroll);
44 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1);
45 }
46
47 ~MockTopControlsManagerClient() override {}
48
49 void DidChangeTopControlsPosition() override {
50 redraw_needed_ = true;
51 update_draw_properties_needed_ = true;
52 }
53
54 bool HaveRootScrollLayer() const override { return true; }
55
56 float BottomControlsHeight() const override {
57 return bottom_controls_height_;
58 }
59
60 float TopControlsHeight() const override { return top_controls_height_; }
61
62 void SetCurrentTopControlsShownRatio(float ratio) override {
63 ASSERT_FALSE(std::isnan(ratio));
64 ASSERT_FALSE(ratio == std::numeric_limits<float>::infinity());
65 ASSERT_FALSE(ratio == -std::numeric_limits<float>::infinity());
66 ratio = std::max(ratio, 0.f);
67 ratio = std::min(ratio, 1.f);
68 top_controls_shown_ratio_ = ratio;
69 }
70
71 float CurrentTopControlsShownRatio() const override {
72 return top_controls_shown_ratio_;
73 }
74
75 LayerImpl* rootScrollLayer() {
76 return root_scroll_layer_.get();
77 }
78
79 TopControlsManager* manager() {
80 if (!manager_) {
81 manager_ = TopControlsManager::Create(this,
82 top_controls_show_threshold_,
83 top_controls_hide_threshold_);
84 }
85 return manager_.get();
86 }
87
88 void SetTopControlsHeight(float height) { top_controls_height_ = height; }
89
90 void SetBottomControlsHeight(float height) {
91 bottom_controls_height_ = height;
92 }
93
94 private:
95 FakeImplTaskRunnerProvider task_runner_provider_;
96 TestSharedBitmapManager shared_bitmap_manager_;
97 TestTaskGraphRunner task_graph_runner_;
98 FakeLayerTreeHostImpl host_impl_;
99 std::unique_ptr<LayerTreeImpl> active_tree_;
100 std::unique_ptr<LayerImpl> root_scroll_layer_;
101 std::unique_ptr<TopControlsManager> manager_;
102 bool redraw_needed_;
103 bool update_draw_properties_needed_;
104
105 float bottom_controls_height_;
106 float top_controls_shown_ratio_;
107 float top_controls_height_;
108 float top_controls_show_threshold_;
109 float top_controls_hide_threshold_;
110 };
111
112 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) {
113 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
114 TopControlsManager* manager = client.manager();
115
116 manager->ScrollBegin();
117
118 // Scroll down to hide the controls entirely.
119 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
120 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset());
121
122 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
123 EXPECT_FLOAT_EQ(-60.f, manager->ControlsTopOffset());
124
125 manager->ScrollBy(gfx::Vector2dF(0.f, 100.f));
126 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
127
128 // Scroll back up a bit and ensure the controls don't move until we cross
129 // the threshold.
130 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f));
131 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
132
133 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f));
134 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
135
136 // After hitting the threshold, further scrolling up should result in the top
137 // controls showing.
138 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f));
139 EXPECT_FLOAT_EQ(-90.f, manager->ControlsTopOffset());
140
141 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f));
142 EXPECT_FLOAT_EQ(-40.f, manager->ControlsTopOffset());
143
144 // Reset the scroll threshold by going further up the page than the initial
145 // threshold.
146 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f));
147 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
148
149 // See that scrolling down the page now will result in the controls hiding.
150 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
151 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset());
152
153 manager->ScrollEnd();
154 }
155
156 TEST(TopControlsManagerTest, PartialShownHideAnimation) {
157 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
158 TopControlsManager* manager = client.manager();
159 manager->ScrollBegin();
160 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
161 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
162 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
163 manager->ScrollEnd();
164
165 manager->ScrollBegin();
166 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
167 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset());
168 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset());
169 manager->ScrollEnd();
170
171 EXPECT_TRUE(manager->has_animation());
172
173 base::TimeTicks time = base::TimeTicks::Now();
174 float previous;
175 while (manager->has_animation()) {
176 previous = manager->TopControlsShownRatio();
177 time = base::TimeDelta::FromMicroseconds(100) + time;
178 manager->Animate(time);
179 EXPECT_LT(manager->TopControlsShownRatio(), previous);
180 }
181 EXPECT_FALSE(manager->has_animation());
182 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
183 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
184 }
185
186 TEST(TopControlsManagerTest, PartialShownShowAnimation) {
187 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
188 TopControlsManager* manager = client.manager();
189 manager->ScrollBegin();
190 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
191 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
192 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
193 manager->ScrollEnd();
194
195 manager->ScrollBegin();
196 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f));
197 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset());
198 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset());
199 manager->ScrollEnd();
200
201 EXPECT_TRUE(manager->has_animation());
202
203 base::TimeTicks time = base::TimeTicks::Now();
204 float previous;
205 while (manager->has_animation()) {
206 previous = manager->TopControlsShownRatio();
207 time = base::TimeDelta::FromMicroseconds(100) + time;
208 manager->Animate(time);
209 EXPECT_GT(manager->TopControlsShownRatio(), previous);
210 }
211 EXPECT_FALSE(manager->has_animation());
212 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
213 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset());
214 }
215
216 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) {
217 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
218 TopControlsManager* manager = client.manager();
219
220 manager->ScrollBegin();
221
222 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
223 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset());
224 EXPECT_FLOAT_EQ(80.f, manager->ContentTopOffset());
225
226 manager->ScrollEnd();
227 EXPECT_TRUE(manager->has_animation());
228
229 base::TimeTicks time = base::TimeTicks::Now();
230 float previous;
231 while (manager->has_animation()) {
232 previous = manager->TopControlsShownRatio();
233 time = base::TimeDelta::FromMicroseconds(100) + time;
234 manager->Animate(time);
235 EXPECT_GT(manager->TopControlsShownRatio(), previous);
236 }
237 EXPECT_FALSE(manager->has_animation());
238 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
239 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset());
240 }
241
242 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) {
243 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
244 TopControlsManager* manager = client.manager();
245
246 manager->ScrollBegin();
247
248 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
249 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset());
250 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset());
251
252 manager->ScrollEnd();
253 EXPECT_TRUE(manager->has_animation());
254
255 base::TimeTicks time = base::TimeTicks::Now();
256 float previous;
257 while (manager->has_animation()) {
258 previous = manager->TopControlsShownRatio();
259 time = base::TimeDelta::FromMicroseconds(100) + time;
260 manager->Animate(time);
261 EXPECT_LT(manager->TopControlsShownRatio(), previous);
262 }
263 EXPECT_FALSE(manager->has_animation());
264 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
265 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
266 }
267
268 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) {
269 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
270 TopControlsManager* manager = client.manager();
271
272 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
273 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
274 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
275
276 manager->ScrollBegin();
277
278 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f));
279 EXPECT_FLOAT_EQ(-80.f, manager->ControlsTopOffset());
280 EXPECT_FLOAT_EQ(20.f, manager->ContentTopOffset());
281
282 manager->ScrollEnd();
283 EXPECT_TRUE(manager->has_animation());
284
285 base::TimeTicks time = base::TimeTicks::Now();
286 float previous;
287 while (manager->has_animation()) {
288 previous = manager->TopControlsShownRatio();
289 time = base::TimeDelta::FromMicroseconds(100) + time;
290 manager->Animate(time);
291 EXPECT_LT(manager->TopControlsShownRatio(), previous);
292 }
293 EXPECT_FALSE(manager->has_animation());
294 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
295 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
296 }
297
298 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) {
299 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
300 TopControlsManager* manager = client.manager();
301
302 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
303 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
304 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
305
306 manager->ScrollBegin();
307
308 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f));
309 EXPECT_FLOAT_EQ(-70.f, manager->ControlsTopOffset());
310 EXPECT_FLOAT_EQ(30.f, manager->ContentTopOffset());
311
312 manager->ScrollEnd();
313 EXPECT_TRUE(manager->has_animation());
314
315 base::TimeTicks time = base::TimeTicks::Now();
316 float previous;
317 while (manager->has_animation()) {
318 previous = manager->TopControlsShownRatio();
319 time = base::TimeDelta::FromMicroseconds(100) + time;
320 manager->Animate(time);
321 EXPECT_GT(manager->TopControlsShownRatio(), previous);
322 }
323 EXPECT_FALSE(manager->has_animation());
324 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
325 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset());
326 }
327
328 TEST(TopControlsManagerTest, PinchIgnoresScroll) {
329 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
330 TopControlsManager* manager = client.manager();
331
332 // Hide the controls.
333 manager->ScrollBegin();
334 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
335
336 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
337 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
338
339 manager->PinchBegin();
340 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
341
342 // Scrolls are ignored during pinch.
343 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
344 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
345 manager->PinchEnd();
346 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
347
348 // Scrolls should no long be ignored.
349 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
350 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset());
351 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset());
352 manager->ScrollEnd();
353
354 EXPECT_TRUE(manager->has_animation());
355 }
356
357 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) {
358 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
359 TopControlsManager* manager = client.manager();
360
361 manager->ScrollBegin();
362 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
363 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
364
365 manager->PinchBegin();
366 EXPECT_FALSE(manager->has_animation());
367
368 manager->PinchEnd();
369 EXPECT_FALSE(manager->has_animation());
370
371 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
372 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset());
373 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset());
374
375 manager->PinchBegin();
376 EXPECT_TRUE(manager->has_animation());
377
378 base::TimeTicks time = base::TimeTicks::Now();
379 float previous;
380 while (manager->has_animation()) {
381 previous = manager->TopControlsShownRatio();
382 time = base::TimeDelta::FromMicroseconds(100) + time;
383 manager->Animate(time);
384 EXPECT_LT(manager->TopControlsShownRatio(), previous);
385 }
386 EXPECT_FALSE(manager->has_animation());
387
388 manager->PinchEnd();
389 EXPECT_FALSE(manager->has_animation());
390
391 manager->ScrollBy(gfx::Vector2dF(0.f, -55.f));
392 EXPECT_FLOAT_EQ(-45.f, manager->ControlsTopOffset());
393 EXPECT_FLOAT_EQ(55.f, manager->ContentTopOffset());
394 EXPECT_FALSE(manager->has_animation());
395
396 manager->ScrollEnd();
397 EXPECT_TRUE(manager->has_animation());
398
399 time = base::TimeTicks::Now();
400 while (manager->has_animation()) {
401 previous = manager->TopControlsShownRatio();
402 time = base::TimeDelta::FromMicroseconds(100) + time;
403 manager->Animate(time);
404 EXPECT_GT(manager->TopControlsShownRatio(), previous);
405 }
406 EXPECT_FALSE(manager->has_animation());
407 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
408 }
409
410 TEST(TopControlsManagerTest, HeightChangeMaintainsFullyVisibleControls) {
411 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f);
412 TopControlsManager* manager = client.manager();
413
414 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
415
416 client.SetTopControlsHeight(100.f);
417 EXPECT_FALSE(manager->has_animation());
418 EXPECT_FLOAT_EQ(100.f, manager->TopControlsHeight());
419 EXPECT_FLOAT_EQ(0, manager->ControlsTopOffset());
420
421 client.SetTopControlsHeight(50.f);
422 EXPECT_FALSE(manager->has_animation());
423 EXPECT_FLOAT_EQ(50.f, manager->TopControlsHeight());
424 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
425 }
426
427 TEST(TopControlsManagerTest, GrowingHeightKeepsTopControlsHidden) {
428 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f);
429 TopControlsManager* manager = client.manager();
430 client.SetTopControlsHeight(1.f);
431 manager->UpdateTopControlsState(HIDDEN, HIDDEN, false);
432 EXPECT_EQ(-1.f, manager->ControlsTopOffset());
433 EXPECT_EQ(0.f, manager->ContentTopOffset());
434
435 client.SetTopControlsHeight(50.f);
436 EXPECT_FALSE(manager->has_animation());
437 EXPECT_EQ(-50.f, manager->ControlsTopOffset());
438 EXPECT_EQ(0.f, manager->ContentTopOffset());
439
440 client.SetTopControlsHeight(100.f);
441 EXPECT_FALSE(manager->has_animation());
442 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
443 EXPECT_EQ(0.f, manager->ContentTopOffset());
444 }
445
446 TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) {
447 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
448 TopControlsManager* manager = client.manager();
449
450 manager->ScrollBegin();
451 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
452 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
453 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
454 manager->ScrollEnd();
455
456 client.SetTopControlsHeight(50.f);
457 EXPECT_FALSE(manager->has_animation());
458 EXPECT_FLOAT_EQ(-50.f, manager->ControlsTopOffset());
459 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
460
461 client.SetTopControlsHeight(0.f);
462 EXPECT_FALSE(manager->has_animation());
463 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
464 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
465 }
466
467 TEST(TopControlsManagerTest, ScrollByWithZeroHeightControlsIsNoop) {
468 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f);
469 TopControlsManager* manager = client.manager();
470 manager->UpdateTopControlsState(BOTH, BOTH, false);
471
472 manager->ScrollBegin();
473 gfx::Vector2dF pending = manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
474 EXPECT_FLOAT_EQ(20.f, pending.y());
475 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
476 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
477 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio());
478 manager->ScrollEnd();
479 }
480
481 TEST(TopControlsManagerTest, ScrollThenRestoreBottomControls) {
482 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
483 client.SetBottomControlsHeight(100.f);
484 TopControlsManager* manager = client.manager();
485 manager->ScrollBegin();
486 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
487 EXPECT_FLOAT_EQ(80.f, manager->ContentBottomOffset());
488 EXPECT_FLOAT_EQ(0.8f, manager->BottomControlsShownRatio());
489 manager->ScrollEnd();
490
491 manager->ScrollBegin();
492 manager->ScrollBy(gfx::Vector2dF(0.f, -200.f));
493 EXPECT_FLOAT_EQ(100.f, manager->ContentBottomOffset());
494 EXPECT_FLOAT_EQ(1.f, manager->BottomControlsShownRatio());
495 manager->ScrollEnd();
496 }
497
498 TEST(TopControlsManagerTest, HideAndPeekBottomControls) {
499 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
500 client.SetBottomControlsHeight(100.f);
501 TopControlsManager* manager = client.manager();
502 manager->ScrollBegin();
503 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
504 EXPECT_FLOAT_EQ(0.f, manager->ContentBottomOffset());
505 EXPECT_FLOAT_EQ(0.f, manager->BottomControlsShownRatio());
506 manager->ScrollEnd();
507
508 manager->ScrollBegin();
509 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
510 EXPECT_FLOAT_EQ(15.f, manager->ContentBottomOffset());
511 EXPECT_FLOAT_EQ(0.15f, manager->BottomControlsShownRatio());
512 manager->ScrollEnd();
513 }
514
515 TEST(TopControlsManagerTest, HideAndImmediateShowKeepsControlsVisible) {
516 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
517 client.SetBottomControlsHeight(100.f);
518 TopControlsManager* manager = client.manager();
519 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio());
520
521 manager->UpdateTopControlsState(BOTH, HIDDEN, true);
522 EXPECT_TRUE(manager->has_animation());
523 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio());
524
525 manager->UpdateTopControlsState(BOTH, SHOWN, true);
526 EXPECT_FALSE(manager->has_animation());
527 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio());
528 }
529
530 } // namespace
531 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/top_controls_manager_client.h ('k') | cc/input/top_controls_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698