Chromium Code Reviews| Index: cc/trees/layer_tree_host_impl_unittest.cc |
| diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc |
| index 5694c01aaa37565bec2f4254a0a41db9cb8092da..ef017e945c38ca81d6f24d00e0c0eec627f9d3ea 100644 |
| --- a/cc/trees/layer_tree_host_impl_unittest.cc |
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc |
| @@ -2579,23 +2579,32 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) { |
| host_impl_->active_tree()->TotalScrollOffset(); |
| EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset); |
| - // Hide the top controls by 25px. |
| - gfx::Vector2dF scroll_delta(0.f, 25.f); |
|
aelias_OOO_until_Jul13
2014/11/04 06:07:55
You're making this test no longer try to scroll ag
|
| + // Scroll up the content by 25.f. |
| + gfx::Vector2dF scroll_delta(0.f, -25.f); |
| EXPECT_EQ(InputHandler::ScrollStarted, |
| host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| host_impl_->ScrollEnd(); |
| - EXPECT_EQ(scroll_delta.y(), |
| + // Top controls should not have moved |
| + EXPECT_EQ(0.f, |
| settings_.top_controls_height - |
| host_impl_->active_tree()->total_top_controls_content_offset()); |
| inner_scroll->ClampScrollToMaxScrollOffset(); |
| outer_scroll->ClampScrollToMaxScrollOffset(); |
| - // We should still be fully scrolled. |
| - EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), |
| - host_impl_->active_tree()->TotalScrollOffset()); |
| + viewport_offset = host_impl_->active_tree()->TotalScrollOffset(); |
| + |
| + // Hide top controls by 25.f |
| + scroll_delta = gfx::Vector2dF(0.f, 25.f); |
| + EXPECT_EQ(InputHandler::ScrollStarted, |
| + host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| + host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| + host_impl_->ScrollEnd(); |
| + |
| + // The viewport offset shouldn't have changed. |
| + EXPECT_EQ(viewport_offset, host_impl_->active_tree()->TotalScrollOffset()); |
| viewport_offset = host_impl_->active_tree()->TotalScrollOffset(); |
| @@ -7198,6 +7207,60 @@ TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) { |
| EXPECT_FALSE(host_impl_->top_controls_manager()->animation()); |
| } |
| +TEST_F(LayerTreeHostImplWithTopControlsTest, |
| + TopControlsScrollDeltaInOverScroll) { |
| + // test varifies that the overscroll delta should not have accumulated in |
| + // the top controls if we do a hide and show without releasing finger. |
| + |
| + LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); |
| + host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| + host_impl_->top_controls_manager()->UpdateTopControlsState( |
| + BOTH, SHOWN, false); |
| + DrawFrame(); |
| + |
| + EXPECT_EQ(InputHandler::ScrollStarted, |
| + host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| + EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); |
| + |
| + float offset = 50; |
| + EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| + EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); |
| + EXPECT_EQ(gfx::Vector2dF().ToString(), |
| + scroll_layer->TotalScrollOffset().ToString()); |
| + |
| + EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| + EXPECT_EQ(gfx::Vector2dF(0, offset).ToString(), |
| + scroll_layer->TotalScrollOffset().ToString()); |
| + |
| + EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| + // Should have fully scrolled |
| + EXPECT_EQ(gfx::Vector2dF(0, scroll_layer->MaxScrollOffset().y()).ToString(), |
| + scroll_layer->TotalScrollOffset().ToString()); |
| + |
| + float overscrollamount = 10; |
| + // Overscroll the content |
| + EXPECT_FALSE( |
| + host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, overscrollamount))); |
| + EXPECT_EQ(gfx::Vector2dF(0, 2 * offset).ToString(), |
| + scroll_layer->TotalScrollOffset().ToString()); |
| + EXPECT_EQ(gfx::Vector2dF(0, overscrollamount).ToString(), |
| + host_impl_->accumulated_root_overscroll().ToString()); |
| + |
| + EXPECT_TRUE( |
| + host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -2 * offset))); |
| + EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(), |
| + scroll_layer->TotalScrollOffset().ToString()); |
| + EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); |
| + |
| + EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -offset))); |
| + EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(), |
| + scroll_layer->TotalScrollOffset().ToString()); |
| + // Top controls should be fully visible |
| + EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); |
| + |
| + host_impl_->ScrollEnd(); |
| +} |
| + |
| class LayerTreeHostImplVirtualViewportTest : public LayerTreeHostImplTest { |
| public: |
| void SetupVirtualViewportLayers(const gfx::Size& content_size, |