diff options
author | tedchoc@chromium.org <tedchoc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-11 21:53:47 +0000 |
---|---|---|
committer | tedchoc@chromium.org <tedchoc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-11 21:53:47 +0000 |
commit | bbc69ad5146233db8d14a3ca0f6a4ad5dbe56dc5 (patch) | |
tree | 4f45328c0a9cb3ec27e5ba871fdd215dce11e162 | |
parent | f78fbe07b29f328776c0e3f35dc1871a6f5e759e (diff) | |
download | chromium_src-bbc69ad5146233db8d14a3ca0f6a4ad5dbe56dc5.zip chromium_src-bbc69ad5146233db8d14a3ca0f6a4ad5dbe56dc5.tar.gz chromium_src-bbc69ad5146233db8d14a3ca0f6a4ad5dbe56dc5.tar.bz2 |
Top controls hiding anchor should only apply on scroll up.
Toolbar should hide right away (bottom of the toolbar = new anchor position)
when scrolling down the page.
TEST=run cc_unittests -f TopControlsManagerTest*
BUG=174446
Review URL: https://chromiumcodereview.appspot.com/12225073
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181767 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | cc/top_controls_manager.cc | 5 | ||||
-rw-r--r-- | cc/top_controls_manager_unittest.cc | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/cc/top_controls_manager.cc b/cc/top_controls_manager.cc index 0cdaadec..eb4b6b2 100644 --- a/cc/top_controls_manager.cc +++ b/cc/top_controls_manager.cc @@ -57,7 +57,10 @@ gfx::Vector2dF TopControlsManager::ScrollBy( return pending_delta; float scroll_total_y = RootScrollLayerTotalScrollY(); - if (in_scroll_gesture_ && + + if (in_scroll_gesture_ && pending_delta.y() > 0 && controls_top_offset_ == 0) + scroll_start_offset_ = scroll_total_y; + else if (in_scroll_gesture_ && ((pending_delta.y() > 0 && scroll_total_y < scroll_start_offset_) || (pending_delta.y() < 0 && scroll_total_y > scroll_start_offset_ + top_controls_height_))) { diff --git a/cc/top_controls_manager_unittest.cc b/cc/top_controls_manager_unittest.cc index 1418be3..d201454 100644 --- a/cc/top_controls_manager_unittest.cc +++ b/cc/top_controls_manager_unittest.cc @@ -180,6 +180,19 @@ TEST(TopControlsManagerTest, ensureScrollThresholdApplied) { EXPECT_EQ(0.f, manager->content_top_offset()); client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 240)); + // Reset the scroll threshold by going further up the page than the initial + // threshold. + manager->ScrollBy(gfx::Vector2dF(0.f, -100.f)); + EXPECT_EQ(0.f, manager->controls_top_offset()); + EXPECT_EQ(0.f, manager->content_top_offset()); + client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 140)); + + // See that scrolling down the page now will result in the controls hiding. + manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); + EXPECT_EQ(-20.f, manager->controls_top_offset()); + EXPECT_EQ(0.f, manager->content_top_offset()); + client.rootScrollLayer()->setScrollOffset(gfx::Vector2d(0, 160)); + manager->ScrollEnd(); } |