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

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

Issue 2106753004: Introduce bottom controls to CC and let it respond to scrolling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: findbug Created 4 years, 4 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_client.h ('k') | cc/ipc/cc_param_traits_macros.h » ('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 <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 15 matching lines...) Expand all
26 class MockTopControlsManagerClient : public TopControlsManagerClient { 26 class MockTopControlsManagerClient : public TopControlsManagerClient {
27 public: 27 public:
28 MockTopControlsManagerClient(float top_controls_height, 28 MockTopControlsManagerClient(float top_controls_height,
29 float top_controls_show_threshold, 29 float top_controls_show_threshold,
30 float top_controls_hide_threshold) 30 float top_controls_hide_threshold)
31 : host_impl_(&task_runner_provider_, 31 : host_impl_(&task_runner_provider_,
32 &shared_bitmap_manager_, 32 &shared_bitmap_manager_,
33 &task_graph_runner_), 33 &task_graph_runner_),
34 redraw_needed_(false), 34 redraw_needed_(false),
35 update_draw_properties_needed_(false), 35 update_draw_properties_needed_(false),
36 bottom_controls_height_(0.f),
36 top_controls_shown_ratio_(1.f), 37 top_controls_shown_ratio_(1.f),
37 top_controls_height_(top_controls_height), 38 top_controls_height_(top_controls_height),
38 top_controls_show_threshold_(top_controls_show_threshold), 39 top_controls_show_threshold_(top_controls_show_threshold),
39 top_controls_hide_threshold_(top_controls_hide_threshold) { 40 top_controls_hide_threshold_(top_controls_hide_threshold) {
40 active_tree_ = base::MakeUnique<LayerTreeImpl>( 41 active_tree_ = base::MakeUnique<LayerTreeImpl>(
41 &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedTopControls, 42 &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedTopControls,
42 new SyncedElasticOverscroll); 43 new SyncedElasticOverscroll);
43 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); 44 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1);
44 } 45 }
45 46
46 ~MockTopControlsManagerClient() override {} 47 ~MockTopControlsManagerClient() override {}
47 48
48 void DidChangeTopControlsPosition() override { 49 void DidChangeTopControlsPosition() override {
49 redraw_needed_ = true; 50 redraw_needed_ = true;
50 update_draw_properties_needed_ = true; 51 update_draw_properties_needed_ = true;
51 } 52 }
52 53
53 bool HaveRootScrollLayer() const override { return true; } 54 bool HaveRootScrollLayer() const override { return true; }
54 55
56 float BottomControlsHeight() const override {
57 return bottom_controls_height_;
58 }
59
55 float TopControlsHeight() const override { return top_controls_height_; } 60 float TopControlsHeight() const override { return top_controls_height_; }
56 61
57 void SetCurrentTopControlsShownRatio(float ratio) override { 62 void SetCurrentTopControlsShownRatio(float ratio) override {
58 ASSERT_FALSE(std::isnan(ratio)); 63 ASSERT_FALSE(std::isnan(ratio));
59 ASSERT_FALSE(ratio == std::numeric_limits<float>::infinity()); 64 ASSERT_FALSE(ratio == std::numeric_limits<float>::infinity());
60 ASSERT_FALSE(ratio == -std::numeric_limits<float>::infinity()); 65 ASSERT_FALSE(ratio == -std::numeric_limits<float>::infinity());
61 ratio = std::max(ratio, 0.f); 66 ratio = std::max(ratio, 0.f);
62 ratio = std::min(ratio, 1.f); 67 ratio = std::min(ratio, 1.f);
63 top_controls_shown_ratio_ = ratio; 68 top_controls_shown_ratio_ = ratio;
64 } 69 }
(...skipping 10 matching lines...) Expand all
75 if (!manager_) { 80 if (!manager_) {
76 manager_ = TopControlsManager::Create(this, 81 manager_ = TopControlsManager::Create(this,
77 top_controls_show_threshold_, 82 top_controls_show_threshold_,
78 top_controls_hide_threshold_); 83 top_controls_hide_threshold_);
79 } 84 }
80 return manager_.get(); 85 return manager_.get();
81 } 86 }
82 87
83 void SetTopControlsHeight(float height) { top_controls_height_ = height; } 88 void SetTopControlsHeight(float height) { top_controls_height_ = height; }
84 89
90 void SetBottomControlsHeight(float height) {
91 bottom_controls_height_ = height;
92 }
93
85 private: 94 private:
86 FakeImplTaskRunnerProvider task_runner_provider_; 95 FakeImplTaskRunnerProvider task_runner_provider_;
87 TestSharedBitmapManager shared_bitmap_manager_; 96 TestSharedBitmapManager shared_bitmap_manager_;
88 TestTaskGraphRunner task_graph_runner_; 97 TestTaskGraphRunner task_graph_runner_;
89 FakeLayerTreeHostImpl host_impl_; 98 FakeLayerTreeHostImpl host_impl_;
90 std::unique_ptr<LayerTreeImpl> active_tree_; 99 std::unique_ptr<LayerTreeImpl> active_tree_;
91 std::unique_ptr<LayerImpl> root_scroll_layer_; 100 std::unique_ptr<LayerImpl> root_scroll_layer_;
92 std::unique_ptr<TopControlsManager> manager_; 101 std::unique_ptr<TopControlsManager> manager_;
93 bool redraw_needed_; 102 bool redraw_needed_;
94 bool update_draw_properties_needed_; 103 bool update_draw_properties_needed_;
95 104
105 float bottom_controls_height_;
96 float top_controls_shown_ratio_; 106 float top_controls_shown_ratio_;
97 float top_controls_height_; 107 float top_controls_height_;
98 float top_controls_show_threshold_; 108 float top_controls_show_threshold_;
99 float top_controls_hide_threshold_; 109 float top_controls_hide_threshold_;
100 }; 110 };
101 111
102 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { 112 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) {
103 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 113 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
104 TopControlsManager* manager = client.manager(); 114 TopControlsManager* manager = client.manager();
105 115
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 471
462 manager->ScrollBegin(); 472 manager->ScrollBegin();
463 gfx::Vector2dF pending = manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); 473 gfx::Vector2dF pending = manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
464 EXPECT_FLOAT_EQ(20.f, pending.y()); 474 EXPECT_FLOAT_EQ(20.f, pending.y());
465 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); 475 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
466 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); 476 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
467 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio()); 477 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio());
468 manager->ScrollEnd(); 478 manager->ScrollEnd();
469 } 479 }
470 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 }
471 514
472 } // namespace 515 } // namespace
473 } // namespace cc 516 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/top_controls_manager_client.h ('k') | cc/ipc/cc_param_traits_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698