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 d761c89f09a68166faf9cab5f7d0191444ef5448..553cdb77ff33302c48f8e3ec7433ea7c4e190db0 100644 |
--- a/cc/trees/layer_tree_host_impl_unittest.cc |
+++ b/cc/trees/layer_tree_host_impl_unittest.cc |
@@ -759,6 +759,61 @@ TEST_F(LayerTreeHostImplTest, ScrollVerticallyByPageReturnsCorrectValue) { |
gfx::Point(), SCROLL_BACKWARD)); |
} |
+TEST_F(LayerTreeHostImplTest, ScrollWithUserUnscrollableLayers) { |
+ LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); |
+ host_impl_->SetViewportSize(gfx::Size(100, 100)); |
+ |
+ gfx::Size overflow_size(400, 400); |
+ ASSERT_EQ(1, scroll_layer->children().size()); |
+ LayerImpl* overflow = scroll_layer->children()[0]; |
+ overflow->SetBounds(overflow_size); |
+ overflow->SetContentBounds(overflow_size); |
+ overflow->SetScrollable(true); |
+ overflow->SetMaxScrollOffset(gfx::Vector2d(overflow_size.width(), |
+ overflow_size.height())); |
+ overflow->SetScrollOffset(gfx::Vector2d()); |
+ overflow->SetPosition(gfx::PointF()); |
+ overflow->SetAnchorPoint(gfx::PointF()); |
+ |
+ InitializeRendererAndDrawFrame(); |
+ gfx::Point scroll_position(10, 10); |
+ |
+ EXPECT_EQ(InputHandler::ScrollStarted, |
+ host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->TotalScrollOffset()); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->TotalScrollOffset()); |
+ |
+ gfx::Vector2dF scroll_delta(10, 10); |
+ host_impl_->ScrollBy(scroll_position, scroll_delta); |
+ host_impl_->ScrollEnd(); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->TotalScrollOffset()); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->TotalScrollOffset()); |
+ |
+ overflow->SetUserScrollable(false, true); |
jamesr
2013/10/21 22:36:34
callsites like this are really hard to read - what
sadrul
2013/10/21 22:39:03
Should this be done for the blink change in https:
sadrul
2013/10/21 23:11:17
Done (replaced LayerImpl::SetUserScrollable() with
|
+ |
+ EXPECT_EQ(InputHandler::ScrollStarted, |
+ host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->TotalScrollOffset()); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->TotalScrollOffset()); |
+ |
+ host_impl_->ScrollBy(scroll_position, scroll_delta); |
+ host_impl_->ScrollEnd(); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->TotalScrollOffset()); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); |
+ |
+ overflow->SetUserScrollable(false, false); |
+ |
+ EXPECT_EQ(InputHandler::ScrollStarted, |
+ host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->TotalScrollOffset()); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); |
+ |
+ host_impl_->ScrollBy(scroll_position, scroll_delta); |
+ host_impl_->ScrollEnd(); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->TotalScrollOffset()); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); |
+} |
+ |
TEST_F(LayerTreeHostImplTest, |
ClearRootRenderSurfaceAndHitTestTouchHandlerRegion) { |
SetupScrollAndContentsLayers(gfx::Size(100, 100)); |