Index: cc/input/top_controls_manager_unittest.cc |
diff --git a/cc/input/top_controls_manager_unittest.cc b/cc/input/top_controls_manager_unittest.cc |
index 3c434dbd7f24873e59fd24aa460bd69469670f13..5074f478a75401f40f02ecef0828b17434d4873b 100644 |
--- a/cc/input/top_controls_manager_unittest.cc |
+++ b/cc/input/top_controls_manager_unittest.cc |
@@ -33,6 +33,7 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
&task_graph_runner_), |
redraw_needed_(false), |
update_draw_properties_needed_(false), |
+ bottom_controls_height_(0.f), |
top_controls_shown_ratio_(1.f), |
top_controls_height_(top_controls_height), |
top_controls_show_threshold_(top_controls_show_threshold), |
@@ -52,6 +53,10 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
bool HaveRootScrollLayer() const override { return true; } |
+ float BottomControlsHeight() const override { |
+ return bottom_controls_height_; |
+ } |
+ |
float TopControlsHeight() const override { return top_controls_height_; } |
void SetCurrentTopControlsShownRatio(float ratio) override { |
@@ -82,6 +87,10 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
void SetTopControlsHeight(float height) { top_controls_height_ = height; } |
+ void SetBottomControlsHeight(float height) { |
+ bottom_controls_height_ = height; |
+ } |
+ |
private: |
FakeImplTaskRunnerProvider task_runner_provider_; |
TestSharedBitmapManager shared_bitmap_manager_; |
@@ -93,6 +102,7 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
bool redraw_needed_; |
bool update_draw_properties_needed_; |
+ float bottom_controls_height_; |
float top_controls_shown_ratio_; |
float top_controls_height_; |
float top_controls_show_threshold_; |
@@ -468,6 +478,39 @@ TEST(TopControlsManagerTest, ScrollByWithZeroHeightControlsIsNoop) { |
manager->ScrollEnd(); |
} |
+TEST(TopControlsManagerTest, ScrollThenRestoreBottomControls) { |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
+ client.SetBottomControlsHeight(100.f); |
+ TopControlsManager* manager = client.manager(); |
+ manager->ScrollBegin(); |
+ manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
+ EXPECT_FLOAT_EQ(80.f, manager->ContentBottomOffset()); |
+ EXPECT_FLOAT_EQ(0.8f, manager->BottomControlsShownRatio()); |
+ manager->ScrollEnd(); |
+ |
+ manager->ScrollBegin(); |
+ manager->ScrollBy(gfx::Vector2dF(0.f, -200.f)); |
+ EXPECT_FLOAT_EQ(100.f, manager->ContentBottomOffset()); |
+ EXPECT_FLOAT_EQ(1.f, manager->BottomControlsShownRatio()); |
+ manager->ScrollEnd(); |
+} |
+ |
+TEST(TopControlsManagerTest, HideAndPeekBottomControls) { |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
+ client.SetBottomControlsHeight(100.f); |
+ TopControlsManager* manager = client.manager(); |
+ manager->ScrollBegin(); |
+ manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentBottomOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->BottomControlsShownRatio()); |
+ manager->ScrollEnd(); |
+ |
+ manager->ScrollBegin(); |
+ manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
+ EXPECT_FLOAT_EQ(15.f, manager->ContentBottomOffset()); |
+ EXPECT_FLOAT_EQ(0.15f, manager->BottomControlsShownRatio()); |
+ manager->ScrollEnd(); |
+} |
} // namespace |
} // namespace cc |