Index: Source/core/rendering/compositing/CompositedLayerMapping.cpp |
diff --git a/Source/core/rendering/compositing/CompositedLayerMapping.cpp b/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
index ccd7e6e7b138b5529efe4faef748dc126c5a7f31..d3191f074678258d3e04db956e480a157b3d4016 100644 |
--- a/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
+++ b/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
@@ -236,6 +236,8 @@ void CompositedLayerMapping::createPrimaryGraphicsLayer() |
updateLayerBlendMode(renderer()->style()); |
updateIsRootForIsolatedGroup(); |
} |
+ |
+ updateScrollBlocksOn(renderer()->style()); |
} |
void CompositedLayerMapping::destroyGraphicsLayers() |
@@ -295,6 +297,18 @@ void CompositedLayerMapping::updateIsRootForIsolatedGroup() |
m_graphicsLayer->setIsRootForIsolatedGroup(isolate); |
} |
+void CompositedLayerMapping::updateScrollBlocksOn(const RenderStyle* style) |
+{ |
+ // Note that blink determines the default scroll blocking policy, even |
+ // when the scroll-blocks-on CSS feature isn't enabled. |
+ WebScrollBlocksOn blockingMode = WebScrollBlocksOnStartTouch | WebScrollBlocksOnWheelEvent; |
+ |
+ if (RuntimeEnabledFeatures::cssScrollBlocksOnEnabled()) |
+ blockingMode = style->scrollBlocksOn(); |
+ |
+ m_graphicsLayer->setScrollBlocksOn(blockingMode); |
+} |
+ |
void CompositedLayerMapping::updateContentsOpaque() |
{ |
ASSERT(m_isMainFrameRenderViewLayer || !m_backgroundLayer); |
@@ -715,6 +729,8 @@ void CompositedLayerMapping::updateGraphicsLayerGeometry(const RenderLayer* comp |
updateScrollParent(compositor()->preferCompositingToLCDTextEnabled() ? m_owningLayer.scrollParent() : 0); |
registerScrollingLayers(); |
+ updateScrollBlocksOn(renderer()->style()); |
+ |
updateCompositingReasons(); |
} |