summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/layer_impl.cc5
-rw-r--r--cc/layer_tree_host_unittest_scroll.cc43
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