- Revision
- 245656
- Author
- [email protected]
- Date
- 2019-05-22 15:58:25 -0700 (Wed, 22 May 2019)
Log Message
Fix scrolling tree state for more obscure combinations of positioning and paint order
https://bugs.webkit.org/show_bug.cgi?id=198139
Reviewed by Antti Koivisto.
Source/WebCore:
There were three places in RenderLayerCompositor that used a version of ancestor
layer traversal looking at containing blocks, and all three had issues. So make a
shared function to do the ancestor walk, and use it thrice.
isScrolledByOverflowScrollLayer() fumbled containingBlockCanSkipLayers, so failed
to create a scrolling tree node for a composited layer inside position:fixed in
overflow (tested by composited-in-absolute-in-overflow.html).
collectStationaryLayerRelatedOverflowNodes() failed to handle nested
overflow:scroll; it needs to find all the composited scrollers that affect the
position of the given layer relative to its compositing ancestor, which may be the
scroller, or a descendant of the scroller. However, it didn't walk up far enough
and find more that one ancestor. Tested by absolute-in-nested-sc-scrollers.html.
enclosingClippingScopes() was OK but now uses the share function.
Tests: scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html
scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html
* rendering/RenderLayerCompositor.cpp:
(WebCore::traverseAncestorLayers):
(WebCore::enclosingClippingScopes):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::collectStationaryLayerRelatedOverflowNodes):
(WebCore::collectRelatedCoordinatedScrollingNodes):
LayoutTests:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html: Added.
* scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (245655 => 245656)
--- trunk/LayoutTests/ChangeLog 2019-05-22 22:43:25 UTC (rev 245655)
+++ trunk/LayoutTests/ChangeLog 2019-05-22 22:58:25 UTC (rev 245656)
@@ -1,5 +1,19 @@
2019-05-22 Simon Fraser <[email protected]>
+ Fix scrolling tree state for more obscure combinations of positioning and paint order
+ https://bugs.webkit.org/show_bug.cgi?id=198139
+
+ Reviewed by Antti Koivisto.
+
+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
+ * scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt: Added.
+ * scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html: Added.
+ * scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt: Added.
+ * scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html: Added.
+
+2019-05-22 Simon Fraser <[email protected]>
+
Inner scroller of nested overflow:scrolls jitters when scrolling
https://bugs.webkit.org/show_bug.cgi?id=198131
Added: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt (0 => 245656)
--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt 2019-05-22 22:58:25 UTC (rev 245656)
@@ -0,0 +1,50 @@
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (parent relative scrollable rect at (0,0) size 800x600)
+ (scrollable area parameters
+ (horizontal scroll elasticity 1)
+ (vertical scroll elasticity 1)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0))
+ (layout viewport at (0,0) size 800x600)
+ (min layout viewport origin (0,0))
+ (max layout viewport origin (0,0))
+ (behavior for fixed 0)
+ (children 1
+ (Overflow scrolling node
+ (scrollable area size 300 300)
+ (contents size 300 794)
+ (parent relative scrollable rect at (30,22) size 300x300)
+ (scrollable area parameters
+ (horizontal scroll elasticity 1)
+ (vertical scroll elasticity 1)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0)
+ (has enabled vertical scrollbar 1))
+ (children 1
+ (Overflow scrolling node
+ (scrollable area size 250 250)
+ (contents size 250 500)
+ (parent relative scrollable rect at (24,24) size 250x250)
+ (scrollable area parameters
+ (horizontal scroll elasticity 1)
+ (vertical scroll elasticity 1)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0)
+ (has enabled vertical scrollbar 1))
+ (children 1
+ (Positioned node
+ (layout constraints
+ (layer-position-at-last-layout (-2,6))
+ (positioning-behavior stationary))
+ (related overflow nodes 2)
+ )
+ )
+ )
+ )
+ )
+ )
+)
+
Added: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt (0 => 245656)
--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt 2019-05-22 22:58:25 UTC (rev 245656)
@@ -0,0 +1,29 @@
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (parent relative scrollable rect at (0,0) size 800x600)
+ (scrollable area parameters
+ (horizontal scroll elasticity 1)
+ (vertical scroll elasticity 1)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0))
+ (layout viewport at (0,0) size 800x600)
+ (min layout viewport origin (0,0))
+ (max layout viewport origin (0,0))
+ (behavior for fixed 0)
+ (children 1
+ (Overflow scrolling node
+ (scrollable area size 300 300)
+ (contents size 300 1000)
+ (parent relative scrollable rect at (30,22) size 300x300)
+ (scrollable area parameters
+ (horizontal scroll elasticity 1)
+ (vertical scroll elasticity 1)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0)
+ (has enabled vertical scrollbar 1))
+ )
+ )
+)
+
Added: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt (0 => 245656)
--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt (rev 0)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt 2019-05-22 22:58:25 UTC (rev 245656)
@@ -0,0 +1,50 @@
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (parent relative scrollable rect at (0,0) size 800x600)
+ (scrollable area parameters
+ (horizontal scroll elasticity 2)
+ (vertical scroll elasticity 2)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0))
+ (layout viewport at (0,0) size 800x600)
+ (min layout viewport origin (0,0))
+ (max layout viewport origin (0,0))
+ (behavior for fixed 0)
+ (children 1
+ (Overflow scrolling node
+ (scrollable area size 285 285)
+ (contents size 285 794)
+ (parent relative scrollable rect at (30,22) size 285x285)
+ (scrollable area parameters
+ (horizontal scroll elasticity 0)
+ (vertical scroll elasticity 0)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0)
+ (has enabled vertical scrollbar 1))
+ (children 1
+ (Overflow scrolling node
+ (scrollable area size 235 235)
+ (contents size 235 500)
+ (parent relative scrollable rect at (24,24) size 235x235)
+ (scrollable area parameters
+ (horizontal scroll elasticity 0)
+ (vertical scroll elasticity 0)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0)
+ (has enabled vertical scrollbar 1))
+ (children 1
+ (Positioned node
+ (layout constraints
+ (layer-position-at-last-layout (-2,6))
+ (positioning-behavior stationary))
+ (related overflow nodes 2)
+ )
+ )
+ )
+ )
+ )
+ )
+)
+
Added: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html (0 => 245656)
--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html (rev 0)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html 2019-05-22 22:58:25 UTC (rev 245656)
@@ -0,0 +1,68 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
+<html>
+<head>
+ <title>Tests that we make a scrolling tree node for composited layers nested inside position:absolute in a scroller</title>
+ <style>
+ .scroller {
+ overflow: scroll;
+ margin: 20px;
+ height: 300px;
+ width: 300px;
+ border: 2px solid black;
+ opacity: 0.8;
+ }
+
+ .scroller > .scroller {
+ height: 250px;
+ width: 250px;
+ }
+
+ .absolute {
+ position:absolute;
+ left: 50px;
+ top: 50px;
+ width: 200px;
+ height: 120px;
+ padding: 20px;
+ background: gray;
+ }
+
+ .composited {
+ transform: translateZ(0);
+ }
+
+ .box {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+
+ .spacer {
+ height: 500px;
+ width: 20px;
+ background-color: silver;
+ }
+ </style>
+ <script>
+ if (window.testRunner)
+ testRunner.dumpAsText();
+
+ window.addEventListener('load', () => {
+ if (window.internals)
+ document.getElementById('tree').innerText = internals.scrollingStateTreeAsText();
+ }, false);
+ </script>
+</head>
+<body>
+ <div class="scroller">
+ <div class="scroller">
+ <div class="absolute">
+ <!-- <div class="composited box"></div> -->
+ </div>
+ <div class="spacer"></div>
+ </div>
+ <div class="spacer"></div>
+ </div>
+<pre id="tree"></pre>
+</body>
+</html>
Added: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt (0 => 245656)
--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt (rev 0)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt 2019-05-22 22:58:25 UTC (rev 245656)
@@ -0,0 +1,29 @@
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (parent relative scrollable rect at (0,0) size 800x600)
+ (scrollable area parameters
+ (horizontal scroll elasticity 2)
+ (vertical scroll elasticity 2)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0))
+ (layout viewport at (0,0) size 800x600)
+ (min layout viewport origin (0,0))
+ (max layout viewport origin (0,0))
+ (behavior for fixed 0)
+ (children 1
+ (Overflow scrolling node
+ (scrollable area size 285 285)
+ (contents size 285 1000)
+ (parent relative scrollable rect at (30,22) size 285x285)
+ (scrollable area parameters
+ (horizontal scroll elasticity 0)
+ (vertical scroll elasticity 0)
+ (horizontal scrollbar mode 0)
+ (vertical scrollbar mode 0)
+ (has enabled vertical scrollbar 1))
+ )
+ )
+)
+
Added: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html (0 => 245656)
--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html (rev 0)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html 2019-05-22 22:58:25 UTC (rev 245656)
@@ -0,0 +1,58 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
+<html>
+<head>
+ <title>Tests that we make a scrolling tree node for composited layers nested inside position:absolute in a scroller</title>
+ <style>
+ .scroller {
+ overflow: scroll;
+ margin: 20px;
+ height: 300px;
+ width: 300px;
+ border: 2px solid black;
+ }
+
+ .absolute {
+ position:absolute;
+ left: 50px;
+ top: 50px;
+ width: 200px;
+ height: 120px;
+ padding: 20px;
+ background: gray;
+ }
+
+ .composited {
+ transform: translateZ(0);
+ }
+
+ .box {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+
+ .spacer {
+ height: 500px;
+ }
+ </style>
+ <script>
+ if (window.testRunner)
+ testRunner.dumpAsText();
+
+ window.addEventListener('load', () => {
+ if (window.internals)
+ document.getElementById('tree').innerText = internals.scrollingStateTreeAsText();
+ }, false);
+ </script>
+</head>
+<body>
+ <div class="scroller">
+ <div class="spacer"></div>
+ <div class="absolute">
+ <div class="composited box"></div>
+ </div>
+ <div class="spacer"></div>
+ </div>
+<pre id="tree"></pre>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (245655 => 245656)
--- trunk/Source/WebCore/ChangeLog 2019-05-22 22:43:25 UTC (rev 245655)
+++ trunk/Source/WebCore/ChangeLog 2019-05-22 22:58:25 UTC (rev 245656)
@@ -1,5 +1,38 @@
2019-05-22 Simon Fraser <[email protected]>
+ Fix scrolling tree state for more obscure combinations of positioning and paint order
+ https://bugs.webkit.org/show_bug.cgi?id=198139
+
+ Reviewed by Antti Koivisto.
+
+ There were three places in RenderLayerCompositor that used a version of ancestor
+ layer traversal looking at containing blocks, and all three had issues. So make a
+ shared function to do the ancestor walk, and use it thrice.
+
+ isScrolledByOverflowScrollLayer() fumbled containingBlockCanSkipLayers, so failed
+ to create a scrolling tree node for a composited layer inside position:fixed in
+ overflow (tested by composited-in-absolute-in-overflow.html).
+
+ collectStationaryLayerRelatedOverflowNodes() failed to handle nested
+ overflow:scroll; it needs to find all the composited scrollers that affect the
+ position of the given layer relative to its compositing ancestor, which may be the
+ scroller, or a descendant of the scroller. However, it didn't walk up far enough
+ and find more that one ancestor. Tested by absolute-in-nested-sc-scrollers.html.
+
+ enclosingClippingScopes() was OK but now uses the share function.
+
+ Tests: scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html
+ scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::traverseAncestorLayers):
+ (WebCore::enclosingClippingScopes):
+ (WebCore::isScrolledByOverflowScrollLayer):
+ (WebCore::collectStationaryLayerRelatedOverflowNodes):
+ (WebCore::collectRelatedCoordinatedScrollingNodes):
+
+2019-05-22 Simon Fraser <[email protected]>
+
Inner scroller of nested overflow:scrolls jitters when scrolling
https://bugs.webkit.org/show_bug.cgi?id=198131
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (245655 => 245656)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-05-22 22:43:25 UTC (rev 245655)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-05-22 22:58:25 UTC (rev 245656)
@@ -1794,6 +1794,34 @@
extent.extentComputed = true;
}
+enum class AncestorTraversal { Continue, Stop };
+
+// This is a simplified version of containing block walking that only handles absolute position.
+template <typename Function>
+static AncestorTraversal traverseAncestorLayers(const RenderLayer& layer, Function&& function)
+{
+ bool containingBlockCanSkipLayers = layer.renderer().isAbsolutelyPositioned();
+ RenderLayer* nextPaintOrderParent = layer.paintOrderParent();
+
+ for (const auto* ancestorLayer = layer.parent(); ancestorLayer; ancestorLayer = ancestorLayer->parent()) {
+ bool inContainingBlockChain = true;
+
+ if (containingBlockCanSkipLayers)
+ inContainingBlockChain = ancestorLayer->renderer().canContainAbsolutelyPositionedObjects();
+
+ if (function(*ancestorLayer, inContainingBlockChain, ancestorLayer == nextPaintOrderParent) == AncestorTraversal::Stop)
+ return AncestorTraversal::Stop;
+
+ if (inContainingBlockChain)
+ containingBlockCanSkipLayers = ancestorLayer->renderer().isAbsolutelyPositioned();
+
+ if (ancestorLayer == nextPaintOrderParent)
+ nextPaintOrderParent = ancestorLayer->paintOrderParent();
+ }
+
+ return AncestorTraversal::Continue;
+}
+
static bool createsClippingScope(const RenderLayer& layer)
{
return layer.hasCompositedScrollableOverflow();
@@ -1807,27 +1835,20 @@
if (!layer.hasCompositedScrollingAncestor())
return clippingScopes;
- bool containingBlockCanSkipLayers = layer.renderer().isAbsolutelyPositioned();
- for (const auto* ancestorLayer = layer.parent(); ancestorLayer; ancestorLayer = ancestorLayer->parent()) {
- bool inContainingBlockChain = true;
- if (containingBlockCanSkipLayers) {
- inContainingBlockChain = ancestorLayer->renderer().canContainAbsolutelyPositionedObjects();
- if (inContainingBlockChain)
- containingBlockCanSkipLayers = ancestorLayer->renderer().isAbsolutelyPositioned();
- }
-
- if (inContainingBlockChain && createsClippingScope(*ancestorLayer)) {
+ traverseAncestorLayers(layer, [&](const RenderLayer& ancestorLayer, bool inContainingBlockChain, bool) {
+ if (inContainingBlockChain && createsClippingScope(ancestorLayer)) {
LayoutRect clipRect;
- if (is<RenderBox>(ancestorLayer->renderer())) {
+ if (is<RenderBox>(ancestorLayer.renderer())) {
// FIXME: This is expensive. Broken with transforms.
- LayoutPoint offsetFromRoot = ancestorLayer->convertToLayerCoords(&rootLayer, { });
- clipRect = downcast<RenderBox>(ancestorLayer->renderer()).overflowClipRect(offsetFromRoot);
+ LayoutPoint offsetFromRoot = ancestorLayer.convertToLayerCoords(&rootLayer, { });
+ clipRect = downcast<RenderBox>(ancestorLayer.renderer()).overflowClipRect(offsetFromRoot);
}
- LayerOverlapMap::LayerAndBounds layerAndBounds { const_cast<RenderLayer&>(*ancestorLayer), clipRect };
+ LayerOverlapMap::LayerAndBounds layerAndBounds { const_cast<RenderLayer&>(ancestorLayer), clipRect };
clippingScopes.insert(1, layerAndBounds); // Order is roots to leaves.
}
- }
+ return AncestorTraversal::Continue;
+ });
return clippingScopes;
}
@@ -3040,24 +3061,17 @@
return nullptr;
}
-// Return true if overflowScrollLayer is in layer's containing block chain.
static bool isScrolledByOverflowScrollLayer(const RenderLayer& layer, const RenderLayer& overflowScrollLayer)
{
- bool containingBlockCanSkipLayers = layer.renderer().isAbsolutelyPositioned();
-
- for (const auto* currLayer = layer.parent(); currLayer; currLayer = currLayer->parent()) {
- bool inContainingBlockChain = true;
- if (containingBlockCanSkipLayers) {
- inContainingBlockChain = currLayer->renderer().canContainAbsolutelyPositionedObjects();
- if (inContainingBlockChain)
- containingBlockCanSkipLayers = currLayer->renderer().isAbsolutelyPositioned();
+ bool scrolledByOverflowScroll = false;
+ traverseAncestorLayers(layer, [&](const RenderLayer& ancestorLayer, bool inContainingBlockChain, bool) {
+ if (&ancestorLayer == &overflowScrollLayer) {
+ scrolledByOverflowScroll = inContainingBlockChain;
+ return AncestorTraversal::Stop;
}
-
- if (currLayer == &overflowScrollLayer)
- return inContainingBlockChain;
- }
-
- return false;
+ return AncestorTraversal::Continue;
+ });
+ return scrolledByOverflowScroll;
}
static bool isNonScrolledLayerInsideScrolledCompositedAncestor(const RenderLayer& layer, const RenderLayer& compositedAncestor, const RenderLayer& scrollingAncestor)
@@ -3083,7 +3097,7 @@
return isNonScrolledLayerInsideScrolledCompositedAncestor(layer, compositedAncestor, *scrollingAncestor);
}
-static void collectStationaryLayerRelatedOverflowNodes(const RenderLayer& layer, const RenderLayer& /*compositedAncestor*/, Vector<ScrollingNodeID>& scrollingNodes)
+static void collectStationaryLayerRelatedOverflowNodes(const RenderLayer& layer, const RenderLayer&, Vector<ScrollingNodeID>& scrollingNodes)
{
ASSERT(layer.isComposited());
@@ -3097,24 +3111,21 @@
};
ASSERT(layer.renderer().isAbsolutelyPositioned());
- bool containingBlockCanSkipLayers = true;
- for (const auto* currLayer = layer.parent(); currLayer; currLayer = currLayer->parent()) {
- bool inContainingBlockChain = true;
- if (containingBlockCanSkipLayers) {
- inContainingBlockChain = currLayer->renderer().canContainAbsolutelyPositionedObjects();
- if (inContainingBlockChain)
- containingBlockCanSkipLayers = currLayer->renderer().isAbsolutelyPositioned();
- }
+ // Collect all the composited scrollers which affect the position of this layer relative to its compositing ancestor (which might be inside the scroller or the scroller itself).
+ bool seenPaintOrderAncestor = false;
+ traverseAncestorLayers(layer, [&](const RenderLayer& ancestorLayer, bool isContainingBlockChain, bool isPaintOrderAncestor) {
+ seenPaintOrderAncestor |= isPaintOrderAncestor;
+ if (isContainingBlockChain && isPaintOrderAncestor)
+ return AncestorTraversal::Stop;
- if (currLayer->hasCompositedScrollableOverflow()) {
- appendOverflowLayerNodeID(*currLayer);
- break;
- }
- }
+ if (seenPaintOrderAncestor && !isContainingBlockChain && ancestorLayer.hasCompositedScrollableOverflow())
+ appendOverflowLayerNodeID(ancestorLayer);
+
+ return AncestorTraversal::Continue;
+ });
}
-
ScrollPositioningBehavior RenderLayerCompositor::computeCoordinatedPositioningForLayer(const RenderLayer& layer) const
{
if (layer.isRenderViewLayer())
@@ -3182,7 +3193,6 @@
}
case ScrollPositioningBehavior::Stationary: {
ASSERT(layer.renderer().isAbsolutelyPositioned());
- // Collect all the composited scrollers between this layer and its composited ancestor.
auto* compositedAncestor = layer.ancestorCompositingLayer();
if (!compositedAncestor)
return overflowNodeData;