Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 661643004: [android] Remove unused scroll delta in TopControls (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698