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 77b40c9de0524a1fdda06213dff3a8b4f8e457a1..4ee58665b52b6d4e8a5ffe8e75ab6804a4040383 100644 |
--- a/cc/input/top_controls_manager_unittest.cc |
+++ b/cc/input/top_controls_manager_unittest.cc |
@@ -19,16 +19,16 @@ |
namespace cc { |
namespace { |
-static const float kTopControlsHeight = 100; |
- |
class MockTopControlsManagerClient : public TopControlsManagerClient { |
public: |
- MockTopControlsManagerClient(float top_controls_show_threshold, |
+ MockTopControlsManagerClient(float top_controls_height, |
+ float top_controls_show_threshold, |
float top_controls_hide_threshold) |
: host_impl_(&proxy_, &shared_bitmap_manager_), |
redraw_needed_(false), |
update_draw_properties_needed_(false), |
top_controls_top_offset_(0.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_); |
@@ -57,9 +57,9 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
TopControlsManager* manager() { |
if (!manager_) { |
manager_ = TopControlsManager::Create(this, |
- kTopControlsHeight, |
top_controls_show_threshold_, |
top_controls_hide_threshold_); |
+ manager_->SetTopControlsHeight(top_controls_height_); |
} |
return manager_.get(); |
} |
@@ -75,12 +75,13 @@ class MockTopControlsManagerClient : public TopControlsManagerClient { |
bool update_draw_properties_needed_; |
float top_controls_top_offset_; |
+ float top_controls_height_; |
float top_controls_show_threshold_; |
float top_controls_hide_threshold_; |
}; |
TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { |
- MockTopControlsManagerClient client(0.5f, 0.5f); |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
@@ -124,7 +125,7 @@ TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { |
} |
TEST(TopControlsManagerTest, PartialShownHideAnimation) { |
- MockTopControlsManagerClient client(0.5f, 0.5f); |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
@@ -154,7 +155,7 @@ TEST(TopControlsManagerTest, PartialShownHideAnimation) { |
} |
TEST(TopControlsManagerTest, PartialShownShowAnimation) { |
- MockTopControlsManagerClient client(0.5f, 0.5f); |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
@@ -184,7 +185,7 @@ TEST(TopControlsManagerTest, PartialShownShowAnimation) { |
} |
TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { |
- MockTopControlsManagerClient client(0.25f, 0.25f); |
+ MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
@@ -210,7 +211,7 @@ TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { |
} |
TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { |
- MockTopControlsManagerClient client(0.25f, 0.25f); |
+ MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
@@ -236,7 +237,7 @@ TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { |
} |
TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { |
- MockTopControlsManagerClient client(0.25f, 0.25f); |
+ MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
@@ -266,7 +267,7 @@ TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { |
} |
TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { |
- MockTopControlsManagerClient client(0.25f, 0.25f); |
+ MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
@@ -296,7 +297,7 @@ TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { |
} |
TEST(TopControlsManagerTest, PinchIgnoresScroll) { |
- MockTopControlsManagerClient client(0.5f, 0.5f); |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
// Hide the controls. |
@@ -325,7 +326,7 @@ TEST(TopControlsManagerTest, PinchIgnoresScroll) { |
} |
TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { |
- MockTopControlsManagerClient client(0.5f, 0.5f); |
+ MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); |
TopControlsManager* manager = client.manager(); |
manager->ScrollBegin(); |
@@ -378,5 +379,80 @@ TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { |
EXPECT_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()); |
+ |
+ manager->SetTopControlsHeight(100.f); |
+ EXPECT_FALSE(manager->animation()); |
+ EXPECT_EQ(100.f, manager->top_controls_height()); |
+ EXPECT_EQ(0, manager->ControlsTopOffset()); |
+ |
+ manager->SetTopControlsHeight(50.f); |
+ EXPECT_FALSE(manager->animation()); |
+ EXPECT_EQ(50.f, manager->top_controls_height()); |
+ EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+} |
+ |
+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(-100.f, manager->ControlsTopOffset()); |
+ EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ manager->ScrollEnd(); |
+ |
+ manager->SetTopControlsHeight(50.f); |
+ EXPECT_FALSE(manager->animation()); |
+ EXPECT_EQ(-50.f, manager->ControlsTopOffset()); |
+ EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+ |
+ manager->SetTopControlsHeight(0.f); |
+ EXPECT_FALSE(manager->animation()); |
+ EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+ EXPECT_EQ(0.f, manager->ContentTopOffset()); |
+} |
+ |
+TEST(TopControlsManagerTest, HiddenTopControlsReadjustOnIncreasedHeight) { |
+ MockTopControlsManagerClient client(10.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()); |
+ 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(); |
+ } |
+ EXPECT_FALSE(manager->animation()); |
+ EXPECT_EQ(-15.f, manager->ControlsTopOffset()); |
+ |
+ 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(); |
+ } |
+ EXPECT_FALSE(manager->animation()); |
+ EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
+} |
} // namespace |
} // namespace cc |