Index: cc/top_controls_manager_unittest.cc |
diff --git a/cc/top_controls_manager_unittest.cc b/cc/top_controls_manager_unittest.cc |
index 1cb250276faa0d86f54139b3f104dde0d2b41db9..74aa5d6804d500a4cf1e08f3908c6c855defdefa 100644 |
--- a/cc/top_controls_manager_unittest.cc |
+++ b/cc/top_controls_manager_unittest.cc |
@@ -141,6 +141,56 @@ TEST(TopControlsManagerTest, overlayModeDetection) { |
client.rootScrollLayer()->scrollDelta() + remaining_scroll); |
} |
+TEST(TopControlsManagerTest, ensureScrollThresholdApplied) { |
+ MockTopControlsManagerClient client; |
+ TopControlsManager* manager = client.manager(); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 200)); |
+ |
+ manager->ScrollBegin(); |
+ |
+ // Scroll down to hide the controls entirely. |
+ manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
+ EXPECT_EQ(-30.f, manager->controls_top_offset()); |
+ EXPECT_EQ(70.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 230)); |
+ |
+ manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
+ EXPECT_EQ(-60.f, manager->controls_top_offset()); |
+ EXPECT_EQ(40.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 260)); |
+ |
+ manager->ScrollBy(gfx::Vector2dF(0.f, 100.f)); |
+ EXPECT_EQ(-100.f, manager->controls_top_offset()); |
+ EXPECT_EQ(0.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 360)); |
+ |
+ // Scroll back up a bit and ensure the controls don't move until we cross |
+ // the threshold. |
+ manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); |
+ EXPECT_EQ(-100.f, manager->controls_top_offset()); |
+ EXPECT_EQ(0.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 350)); |
+ |
+ manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); |
+ EXPECT_EQ(-100.f, manager->controls_top_offset()); |
+ EXPECT_EQ(0.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 300)); |
+ |
+ // After hitting the threshold, further scrolling up should result in the top |
+ // controls showing. |
+ manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); |
+ EXPECT_EQ(-90.f, manager->controls_top_offset()); |
+ EXPECT_EQ(0.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 290)); |
+ |
+ manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); |
+ EXPECT_EQ(-40.f, manager->controls_top_offset()); |
+ EXPECT_EQ(0.f, manager->content_top_offset()); |
+ client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 240)); |
+ |
+ manager->ScrollEnd(); |
+} |
+ |
TEST(TopControlsManagerTest, partialShownHideAnimation) { |
MockTopControlsManagerClient client; |
TopControlsManager* manager = client.manager(); |