| 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 45d636a547e8aace33ccf4f354a60d3f33bd88f8..7bfafbf7521ad598851ad873443fbc3ef87a10ad 100644
|
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
|
| @@ -2592,6 +2592,14 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) {
|
| EXPECT_EQ(InputHandler::ScrollStarted,
|
| host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
|
| host_impl_->ScrollBy(gfx::Point(), scroll_delta);
|
| +
|
| + // scrolling down at the max extents no longer hides the top controls
|
| + EXPECT_EQ(0.f,
|
| + settings_.top_controls_height -
|
| + host_impl_->active_tree()->total_top_controls_content_offset());
|
| +
|
| + // forcefully hide the top controls by 25px
|
| + host_impl_->top_controls_manager()->ScrollBy(scroll_delta);
|
| host_impl_->ScrollEnd();
|
|
|
| EXPECT_EQ(scroll_delta.y(),
|
| @@ -7301,6 +7309,68 @@ 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)).did_scroll);
|
| + 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)).did_scroll);
|
| + EXPECT_EQ(gfx::Vector2dF(0, offset).ToString(),
|
| + scroll_layer->TotalScrollOffset().ToString());
|
| +
|
| + EXPECT_TRUE(
|
| + host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll);
|
| +
|
| + // 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))
|
| + .did_scroll);
|
| + 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))
|
| + .did_scroll);
|
| + 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)).did_scroll);
|
| + 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,
|
|
|