diff options
-rw-r--r-- | cc/layer_impl.cc | 5 | ||||
-rw-r--r-- | cc/layer_tree_host_unittest_scroll.cc | 43 |
2 files changed, 48 insertions, 0 deletions
diff --git a/cc/layer_impl.cc b/cc/layer_impl.cc index dcf531f..8545e42 100644 --- a/cc/layer_impl.cc +++ b/cc/layer_impl.cc @@ -279,6 +279,11 @@ InputHandlerClient::ScrollStatus LayerImpl::tryScroll(const gfx::PointF& screenS return InputHandlerClient::ScrollIgnored; } + if (m_maxScrollOffset.x() <= 0 && m_maxScrollOffset.y() <= 0) { + TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored. Technically scrollable, but has no affordance in either direction."); + return InputHandlerClient::ScrollIgnored; + } + return InputHandlerClient::ScrollStarted; } diff --git a/cc/layer_tree_host_unittest_scroll.cc b/cc/layer_tree_host_unittest_scroll.cc index bfb5e5f..430af5c 100644 --- a/cc/layer_tree_host_unittest_scroll.cc +++ b/cc/layer_tree_host_unittest_scroll.cc @@ -618,5 +618,48 @@ class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest { MULTI_THREAD_TEST_F(ImplSidePaintingScrollTestSimple); +class LayerTreeHostScrollTestScrollZeroMaxScrollOffset + : public LayerTreeHostScrollTest { + public: + LayerTreeHostScrollTestScrollZeroMaxScrollOffset() {} + + virtual void beginTest() OVERRIDE { + postSetNeedsCommitToMainThread(); + } + + virtual void drawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { + LayerImpl* root = impl->rootLayer(); + root->setScrollable(true); + + root->setMaxScrollOffset(gfx::Vector2d(100, 100)); + EXPECT_EQ( + InputHandlerClient::ScrollStarted, + root->tryScroll( + gfx::PointF(0.0f, 1.0f), + InputHandlerClient::Gesture)); + + root->setMaxScrollOffset(gfx::Vector2d(0, 0)); + EXPECT_EQ( + InputHandlerClient::ScrollIgnored, + root->tryScroll( + gfx::PointF(0.0f, 1.0f), + InputHandlerClient::Gesture)); + + root->setMaxScrollOffset(gfx::Vector2d(-100, -100)); + EXPECT_EQ( + InputHandlerClient::ScrollIgnored, + root->tryScroll( + gfx::PointF(0.0f, 1.0f), + InputHandlerClient::Gesture)); + + endTest(); + } + + virtual void afterTest() OVERRIDE {} +}; + +SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollZeroMaxScrollOffset) + + } // namespace } // namespace cc |