 Chromium Code Reviews
 Chromium Code Reviews Issue 30793002:
  cc: Do not allow gesture-scrolling 'overflow[-{x|y}]:hidden' layers.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 30793002:
  cc: Do not allow gesture-scrolling 'overflow[-{x|y}]:hidden' layers.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| 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)); |