summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortedchoc@chromium.org <tedchoc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-11 21:53:47 +0000
committertedchoc@chromium.org <tedchoc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-11 21:53:47 +0000
commitbbc69ad5146233db8d14a3ca0f6a4ad5dbe56dc5 (patch)
tree4f45328c0a9cb3ec27e5ba871fdd215dce11e162
parentf78fbe07b29f328776c0e3f35dc1871a6f5e759e (diff)
downloadchromium_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.cc5
-rw-r--r--cc/top_controls_manager_unittest.cc13
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();
}