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 0be40ca581a4c9b6d97efa0440631e0754b0f2db..16d0e5d21b1b32e45c5f733aa5fcf18daa804ac8 100644 |
--- a/cc/input/top_controls_manager_unittest.cc |
+++ b/cc/input/top_controls_manager_unittest.cc |
@@ -4,6 +4,8 @@ |
#include "cc/input/top_controls_manager.h" |
+#include <algorithm> |
+ |
#include "base/memory/scoped_ptr.h" |
#include "base/time/time.h" |
#include "cc/input/top_controls_manager_client.h" |
@@ -27,13 +29,13 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
: host_impl_(&proxy_, &shared_bitmap_manager_), |
redraw_needed_(false), |
update_draw_properties_needed_(false), |
- top_controls_top_offset_(0.f), |
+ top_controls_shown_ratio_(1.f), |
top_controls_height_(top_controls_height), |
top_controls_show_threshold_(top_controls_show_threshold), |
top_controls_hide_threshold_(top_controls_hide_threshold) { |
- active_tree_ = |
- LayerTreeImpl::create(&host_impl_, new SyncedProperty<ScaleGroup>, |
- new SyncedElasticOverscroll); |
+ active_tree_ = LayerTreeImpl::create( |
+ &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedTopControls, |
+ new SyncedElasticOverscroll); |
root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); |
} |
@@ -46,11 +48,17 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
bool HaveRootScrollLayer() const override { return true; } |
- void SetControlsTopOffset(float offset) override { |
- top_controls_top_offset_ = offset; |
+ float TopControlsHeight() const override { return top_controls_height_; } |
+ |
+ void SetCurrentTopControlsShownRatio(float ratio) override { |
+ ratio = std::max(ratio, 0.f); |
+ ratio = std::min(ratio, 1.f); |
+ top_controls_shown_ratio_ = ratio; |
} |
- float ControlsTopOffset() const override { return top_controls_top_offset_; } |
+ float CurrentTopControlsShownRatio() const override { |
+ return top_controls_shown_ratio_; |
+ } |
LayerImpl* rootScrollLayer() { |
return root_scroll_layer_.get(); |
@@ -61,11 +69,12 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
manager_ = TopControlsManager::Create(this, |
top_controls_show_threshold_, |
top_controls_hide_threshold_); |
- manager_->SetTopControlsHeight(top_controls_height_); |
} |
return manager_.get(); |
} |
+ void SetTopControlsHeight(float height) { top_controls_height_ = height; } |
+ |
private: |
FakeImplProxy proxy_; |
TestSharedBitmapManager shared_bitmap_manager_; |
@@ -76,7 +85,7 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
bool redraw_needed_; |
bool update_draw_properties_needed_; |
- float top_controls_top_offset_; |
+ float top_controls_shown_ratio_; |
float top_controls_height_; |
float top_controls_show_threshold_; |
float top_controls_hide_threshold_; |
@@ -90,38 +99,38 @@ TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { |
// Scroll down to hide the controls entirely. |
manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
- EXPECT_EQ(-30.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); |
manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
- EXPECT_EQ(-60.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-60.f, manager->ControlsTopOffset()); |
manager->ScrollBy(gfx::Vector2dF(0.f, 100.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
// 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->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
// 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->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-90.f, manager->ControlsTopOffset()); |
manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); |
- EXPECT_EQ(-40.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-40.f, manager->ControlsTopOffset()); |
// 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->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
// 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->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset()); |
manager->ScrollEnd(); |
} |
@@ -131,29 +140,29 @@ TEST(TopControlsManagerTest, PartialShownHideAnimation) { |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
- EXPECT_EQ(-85.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(15.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = gfx::FrameTime::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_LT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
} |
TEST(TopControlsManagerTest, PartialShownShowAnimation) { |
@@ -161,29 +170,29 @@ TEST(TopControlsManagerTest, PartialShownShowAnimation) { |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); |
- EXPECT_EQ(-30.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(70.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = gfx::FrameTime::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_GT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(100.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); |
} |
TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { |
@@ -193,23 +202,23 @@ TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
- EXPECT_EQ(-20.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(80.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(80.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = gfx::FrameTime::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_GT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(100.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); |
} |
TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { |
@@ -219,23 +228,23 @@ TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
- EXPECT_EQ(-30.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(70.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = gfx::FrameTime::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_LT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
} |
TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { |
@@ -243,29 +252,29 @@ TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { |
TopControlsManager* manager = client.manager(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); |
- EXPECT_EQ(-80.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(20.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-80.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(20.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = gfx::FrameTime::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_LT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
} |
TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { |
@@ -273,29 +282,29 @@ TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { |
TopControlsManager* manager = client.manager(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); |
- EXPECT_EQ(-70.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(30.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-70.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(30.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = gfx::FrameTime::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_GT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(100.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); |
} |
TEST(TopControlsManagerTest, PinchIgnoresScroll) { |
@@ -304,24 +313,24 @@ TEST(TopControlsManagerTest, PinchIgnoresScroll) { |
// Hide the controls. |
manager->ScrollBegin(); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
manager->PinchBegin(); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
// Scrolls are ignored during pinch. |
manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
manager->PinchEnd(); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
// Scrolls should no long be ignored. |
manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
- EXPECT_EQ(-85.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(15.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
@@ -333,7 +342,7 @@ TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
manager->PinchBegin(); |
EXPECT_FALSE(manager->animation()); |
@@ -342,19 +351,19 @@ TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { |
EXPECT_FALSE(manager->animation()); |
manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
- EXPECT_EQ(-85.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(15.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); |
manager->PinchBegin(); |
EXPECT_TRUE(manager->animation()); |
base::TimeTicks time = base::TimeTicks::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
+ float previous; |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_LT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
@@ -362,99 +371,79 @@ TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { |
EXPECT_FALSE(manager->animation()); |
manager->ScrollBy(gfx::Vector2dF(0.f, -55.f)); |
- EXPECT_EQ(-45.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(55.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-45.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(55.f, manager->ContentTopOffset()); |
EXPECT_FALSE(manager->animation()); |
manager->ScrollEnd(); |
EXPECT_TRUE(manager->animation()); |
time = base::TimeTicks::Now(); |
- previous_offset = manager->ControlsTopOffset(); |
while (manager->animation()) { |
+ previous = manager->TopControlsShownRatio(); |
time = base::TimeDelta::FromMicroseconds(100) + time; |
manager->Animate(time); |
- EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
+ EXPECT_GT(manager->TopControlsShownRatio(), previous); |
} |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
} |
TEST(TopControlsManagerTest, HeightChangeMaintainsFullyVisibleControls) { |
MockTopControlsManagerClient client(0.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
- EXPECT_EQ(0.f, manager->top_controls_height()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
- manager->SetTopControlsHeight(100.f); |
+ client.SetTopControlsHeight(100.f); |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(100.f, manager->top_controls_height()); |
- EXPECT_EQ(0, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(100.f, manager->TopControlsHeight()); |
+ EXPECT_FLOAT_EQ(0, manager->ControlsTopOffset()); |
- manager->SetTopControlsHeight(50.f); |
+ client.SetTopControlsHeight(50.f); |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(50.f, manager->top_controls_height()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(50.f, manager->TopControlsHeight()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
} |
-TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) { |
- MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
+TEST(TopControlsManagerTest, GrowingHeightKeepsTopControlsHidden) { |
+ MockTopControlsManagerClient client(0.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
- |
- manager->ScrollBegin(); |
- manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
- EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
+ manager->UpdateTopControlsState(HIDDEN, HIDDEN, false); |
+ EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
EXPECT_EQ(0.f, manager->ContentTopOffset()); |
- manager->ScrollEnd(); |
- manager->SetTopControlsHeight(50.f); |
+ client.SetTopControlsHeight(50.f); |
EXPECT_FALSE(manager->animation()); |
EXPECT_EQ(-50.f, manager->ControlsTopOffset()); |
EXPECT_EQ(0.f, manager->ContentTopOffset()); |
- manager->SetTopControlsHeight(0.f); |
+ client.SetTopControlsHeight(100.f); |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
EXPECT_EQ(0.f, manager->ContentTopOffset()); |
} |
-TEST(TopControlsManagerTest, HiddenTopControlsReadjustOnIncreasedHeight) { |
- MockTopControlsManagerClient client(10.f, 0.5f, 0.5f); |
+TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) { |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
- EXPECT_EQ(-10.f, manager->ControlsTopOffset()); |
- EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
manager->ScrollEnd(); |
- manager->SetTopControlsHeight(15.f); |
- EXPECT_TRUE(manager->animation()); |
- base::TimeTicks time = base::TimeTicks::Now(); |
- float previous_offset = manager->ControlsTopOffset(); |
- while (manager->animation()) { |
- time = base::TimeDelta::FromMicroseconds(100) + time; |
- manager->Animate(time); |
- EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
- } |
+ client.SetTopControlsHeight(50.f); |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(-15.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(-50.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
- manager->SetTopControlsHeight(35.f); |
- EXPECT_TRUE(manager->animation()); |
- time = base::TimeTicks::Now(); |
- previous_offset = manager->ControlsTopOffset(); |
- while (manager->animation()) { |
- time = base::TimeDelta::FromMicroseconds(100) + time; |
- manager->Animate(time); |
- EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
- previous_offset = manager->ControlsTopOffset(); |
- } |
+ client.SetTopControlsHeight(0.f); |
EXPECT_FALSE(manager->animation()); |
- EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
} |
+ |
} // namespace |
} // namespace cc |