Changeset 267634 in webkit
- Timestamp:
- Sep 26, 2020, 2:08:49 PM (6 years ago)
- Location:
- branches/safari-610-branch
- Files:
-
- 3 added
- 5 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt (modified) (1 diff)
-
LayoutTests/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt (added)
-
LayoutTests/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html (added)
-
LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt (modified) (1 diff)
-
LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderLayer.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-610-branch/LayoutTests/ChangeLog
r267633 r267634 1 2020-09-25 Alan Coon <alancoon@apple.com> 2 3 Cherry-pick r267067. rdar://problem/69586680 4 5 REGRESSION (Async overflow scroll): Code snippets on getkirby.com appear and disappear as content is scrolled 6 https://bugs.webkit.org/show_bug.cgi?id=216490 7 <rdar://problem/67018073> 8 9 Reviewed by Zalan Bujtas. 10 Source/WebCore: 11 12 The content in question had a z-order layer tree like this: 13 14 A (0,0) width=997 height=829 (layerID 20) {sc 2} RenderView 15 + B (0,0) width=997 height=8 RenderBlock HTML class='no-js' 16 + C (0,0) width=997 height=829 RenderFlexibleBox MAIN 17 n D (0,0) width=256 height=829 RenderFlexibleBox NAV class='left panel' 18 n E (0,0) width=256 height=829 (layerID 25) {sc 3} RenderBlock DIV class='scroller' 19 n F (256,0) width=741 height=829 RenderFlexibleBox ARTICLE class='main panel' 20 n G (0,0) width=741 height=829 (layerID 26) {sc 4} RenderBlock DIV class='scroller' 21 n H (0,-816) width=741 height=2810 RenderBlock DIV class='article-content' 22 + I (0,0) width=256 height=1000 (layerID 27) overlap RenderBlock (relative positioned) DIV class='content' 23 + J (10,300) width=721 height=202 (layerID 28) overlap RenderBlock (relative positioned) DIV class='relative-box' 24 + K (10,802) width=721 height=202 (layerID 29) overlap RenderBlock (relative positioned) DIV class='relative-box' 25 + L (10,1304) width=721 height=202 (layerID 30) overlap RenderBlock (relative positioned) DIV class='relative-box' 26 + M (10,1806) width=721 height=202 (layerID 31) overlap RenderBlock (relative positioned) DIV class='relative-box' 27 + M (10,2308) width=721 height=202 (layerID 32) overlap RenderBlock (relative positioned) DIV class='relative-box' 28 29 When layer 'G' is scrolled, the code would find the paint-order parent, F, which is normal-flow because it has overflow:hidden, 30 and would call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. However, that doesn't go high enough, because 31 we need to update J-M since their ancestor clipping stacks have geometry that relies on the scroll position of G. If we don't 32 update that geometry, GraphicsLayers have an incorrect notion of what's visible, and we don't attach backing store. 33 34 The fix is to climb up to the stacking context B and call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. 35 36 Test: compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html 37 38 * rendering/RenderLayer.cpp: 39 (WebCore::RenderLayer::scrollTo): 40 41 LayoutTests: 42 43 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt: Added. 44 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html: Added. 45 46 47 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267067 268f45cc-cd09-0410-ab3c-d52691b4dbfc 48 49 2020-09-14 Simon Fraser <simon.fraser@apple.com> 50 51 REGRESSION (Async overflow scroll): Code snippets on getkirby.com appear and disappear as content is scrolled 52 https://bugs.webkit.org/show_bug.cgi?id=216490 53 <rdar://problem/67018073> 54 55 Reviewed by Zalan Bujtas. 56 57 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt: Added. 58 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html: Added. 59 1 60 2020-09-25 Alan Coon <alancoon@apple.com> 2 61 -
branches/safari-610-branch/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt
r267629 r267634 88 88 (GraphicsLayer 89 89 (position 23.00 23.00) 90 (bounds origin 0.00 150.00) 90 91 (bounds 195.00 210.00) 91 92 (clips 1) -
branches/safari-610-branch/LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt
r246725 r267634 77 77 (GraphicsLayer 78 78 (position 23.00 23.00) 79 (bounds origin 0.00 150.00) 79 80 (bounds 210.00 210.00) 80 81 (clips 1) -
branches/safari-610-branch/Source/WebCore/ChangeLog
r267633 r267634 1 2020-09-25 Alan Coon <alancoon@apple.com> 2 3 Cherry-pick r267067. rdar://problem/69586680 4 5 REGRESSION (Async overflow scroll): Code snippets on getkirby.com appear and disappear as content is scrolled 6 https://bugs.webkit.org/show_bug.cgi?id=216490 7 <rdar://problem/67018073> 8 9 Reviewed by Zalan Bujtas. 10 Source/WebCore: 11 12 The content in question had a z-order layer tree like this: 13 14 A (0,0) width=997 height=829 (layerID 20) {sc 2} RenderView 15 + B (0,0) width=997 height=8 RenderBlock HTML class='no-js' 16 + C (0,0) width=997 height=829 RenderFlexibleBox MAIN 17 n D (0,0) width=256 height=829 RenderFlexibleBox NAV class='left panel' 18 n E (0,0) width=256 height=829 (layerID 25) {sc 3} RenderBlock DIV class='scroller' 19 n F (256,0) width=741 height=829 RenderFlexibleBox ARTICLE class='main panel' 20 n G (0,0) width=741 height=829 (layerID 26) {sc 4} RenderBlock DIV class='scroller' 21 n H (0,-816) width=741 height=2810 RenderBlock DIV class='article-content' 22 + I (0,0) width=256 height=1000 (layerID 27) overlap RenderBlock (relative positioned) DIV class='content' 23 + J (10,300) width=721 height=202 (layerID 28) overlap RenderBlock (relative positioned) DIV class='relative-box' 24 + K (10,802) width=721 height=202 (layerID 29) overlap RenderBlock (relative positioned) DIV class='relative-box' 25 + L (10,1304) width=721 height=202 (layerID 30) overlap RenderBlock (relative positioned) DIV class='relative-box' 26 + M (10,1806) width=721 height=202 (layerID 31) overlap RenderBlock (relative positioned) DIV class='relative-box' 27 + M (10,2308) width=721 height=202 (layerID 32) overlap RenderBlock (relative positioned) DIV class='relative-box' 28 29 When layer 'G' is scrolled, the code would find the paint-order parent, F, which is normal-flow because it has overflow:hidden, 30 and would call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. However, that doesn't go high enough, because 31 we need to update J-M since their ancestor clipping stacks have geometry that relies on the scroll position of G. If we don't 32 update that geometry, GraphicsLayers have an incorrect notion of what's visible, and we don't attach backing store. 33 34 The fix is to climb up to the stacking context B and call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. 35 36 Test: compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html 37 38 * rendering/RenderLayer.cpp: 39 (WebCore::RenderLayer::scrollTo): 40 41 LayoutTests: 42 43 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt: Added. 44 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html: Added. 45 46 47 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267067 268f45cc-cd09-0410-ab3c-d52691b4dbfc 48 49 2020-09-14 Simon Fraser <simon.fraser@apple.com> 50 51 REGRESSION (Async overflow scroll): Code snippets on getkirby.com appear and disappear as content is scrolled 52 https://bugs.webkit.org/show_bug.cgi?id=216490 53 <rdar://problem/67018073> 54 55 Reviewed by Zalan Bujtas. 56 57 The content in question had a z-order layer tree like this: 58 59 A (0,0) width=997 height=829 (layerID 20) {sc 2} RenderView 60 + B (0,0) width=997 height=8 RenderBlock HTML class='no-js' 61 + C (0,0) width=997 height=829 RenderFlexibleBox MAIN 62 n D (0,0) width=256 height=829 RenderFlexibleBox NAV class='left panel' 63 n E (0,0) width=256 height=829 (layerID 25) {sc 3} RenderBlock DIV class='scroller' 64 n F (256,0) width=741 height=829 RenderFlexibleBox ARTICLE class='main panel' 65 n G (0,0) width=741 height=829 (layerID 26) {sc 4} RenderBlock DIV class='scroller' 66 n H (0,-816) width=741 height=2810 RenderBlock DIV class='article-content' 67 + I (0,0) width=256 height=1000 (layerID 27) overlap RenderBlock (relative positioned) DIV class='content' 68 + J (10,300) width=721 height=202 (layerID 28) overlap RenderBlock (relative positioned) DIV class='relative-box' 69 + K (10,802) width=721 height=202 (layerID 29) overlap RenderBlock (relative positioned) DIV class='relative-box' 70 + L (10,1304) width=721 height=202 (layerID 30) overlap RenderBlock (relative positioned) DIV class='relative-box' 71 + M (10,1806) width=721 height=202 (layerID 31) overlap RenderBlock (relative positioned) DIV class='relative-box' 72 + M (10,2308) width=721 height=202 (layerID 32) overlap RenderBlock (relative positioned) DIV class='relative-box' 73 74 When layer 'G' is scrolled, the code would find the paint-order parent, F, which is normal-flow because it has overflow:hidden, 75 and would call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. However, that doesn't go high enough, because 76 we need to update J-M since their ancestor clipping stacks have geometry that relies on the scroll position of G. If we don't 77 update that geometry, GraphicsLayers have an incorrect notion of what's visible, and we don't attach backing store. 78 79 The fix is to climb up to the stacking context B and call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. 80 81 Test: compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html 82 83 * rendering/RenderLayer.cpp: 84 (WebCore::RenderLayer::scrollTo): 85 1 86 2020-09-25 Alan Coon <alancoon@apple.com> 2 87 -
branches/safari-610-branch/Source/WebCore/rendering/RenderLayer.cpp
r267270 r267634 2726 2726 2727 2727 // Scroll position can affect the location of a composited descendant (which may be a sibling in z-order), 2728 // so trigger a descendant walk from the paint-order parent.2729 if (auto* paintParent = paintOrderParent())2728 // so trigger a descendant walk from the stacking context. 2729 if (auto* paintParent = stackingContext()) 2730 2730 paintParent->setDescendantsNeedUpdateBackingAndHierarchyTraversal(); 2731 2731 }
Note:
See TracChangeset
for help on using the changeset viewer.