Changeset 249080 in webkit
- Timestamp:
- Aug 23, 2019, 8:31:55 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
page/FrameView.cpp (modified) (2 diffs)
-
rendering/RenderLayer.cpp (modified) (2 diffs)
-
rendering/RenderLayer.h (modified) (5 diffs)
-
rendering/RenderLayerModelObject.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r249079 r249080 1 2019-08-23 Simon Fraser <simon.fraser@apple.com> 2 3 RenderLayerModelObject should not call private RenderLayer functions 4 https://bugs.webkit.org/show_bug.cgi?id=201111 5 6 Reviewed by Zalan Bujtas. 7 8 Make RenderLayerModelObject no longer a friend class of RenderLayer, giving it a public 9 willRemoveChildWithBlendMode() function to call. Also make the UpdateLayerPositionsFlag 10 enum private, providing a updateLayerPositionsAfterStyleChange() for RenderLayerModelObject, 11 and changing the arguments of updateLayerPositionsAfterLayout() for FrameView. 12 13 No behavior change. 14 15 * page/FrameView.cpp: 16 (WebCore::FrameView::didLayout): 17 (WebCore::updateLayerPositionFlags): Deleted. 18 * rendering/RenderLayer.cpp: 19 (WebCore::RenderLayer::updateLayerPositionsAfterStyleChange): 20 (WebCore::RenderLayer::updateLayerPositionsAfterLayout): 21 (WebCore::RenderLayer::willRemoveChildWithBlendMode): 22 * rendering/RenderLayer.h: 23 * rendering/RenderLayerModelObject.cpp: 24 (WebCore::RenderLayerModelObject::styleDidChange): 25 1 26 2019-08-22 Ryosuke Niwa <rniwa@webkit.org> 2 27 -
trunk/Source/WebCore/page/FrameView.cpp
r248846 r249080 146 146 static constexpr float mainArticleSignificantRenderedTextMeanLength = 25; 147 147 148 static OptionSet<RenderLayer::UpdateLayerPositionsFlag> updateLayerPositionFlags(RenderLayer* layer, bool isRelayoutingSubtree, bool didFullRepaint)149 {150 auto flags = RenderLayer::updateLayerPositionsDefaultFlags();151 if (didFullRepaint) {152 flags.remove(RenderLayer::CheckForRepaint);153 flags.add(RenderLayer::NeedsFullRepaintInBacking);154 }155 if (isRelayoutingSubtree && layer->enclosingPaginationLayer(RenderLayer::IncludeCompositedPaginatedLayers))156 flags.add(RenderLayer::UpdatePagination);157 return flags;158 }159 160 148 Pagination::Mode paginationModeForRenderStyle(const RenderStyle& style) 161 149 { … … 1246 1234 renderView()->releaseProtectedRenderWidgets(); 1247 1235 auto* layoutRootEnclosingLayer = layoutRoot->enclosingLayer(); 1248 layoutRootEnclosingLayer->updateLayerPositionsAfterLayout( renderView()->layer(), updateLayerPositionFlags(layoutRootEnclosingLayer, !is<RenderView>(*layoutRoot), layoutContext().needsFullRepaint()));1236 layoutRootEnclosingLayer->updateLayerPositionsAfterLayout(!is<RenderView>(*layoutRoot), layoutContext().needsFullRepaint()); 1249 1237 1250 1238 updateCompositingLayersAfterLayout(); -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r249045 r249080 876 876 } 877 877 878 void RenderLayer::updateLayerPositionsAfterLayout(const RenderLayer* rootLayer, OptionSet<UpdateLayerPositionsFlag> flags) 879 { 878 void RenderLayer::updateLayerPositionsAfterStyleChange() 879 { 880 updateLayerPositions(nullptr, RenderLayer::updateLayerPositionsDefaultFlags()); 881 } 882 883 void RenderLayer::updateLayerPositionsAfterLayout(bool isRelayoutingSubtree, bool didFullRepaint) 884 { 885 auto updateLayerPositionFlags = [&](bool isRelayoutingSubtree, bool didFullRepaint) { 886 auto flags = RenderLayer::updateLayerPositionsDefaultFlags(); 887 if (didFullRepaint) { 888 flags.remove(RenderLayer::CheckForRepaint); 889 flags.add(RenderLayer::NeedsFullRepaintInBacking); 890 } 891 if (isRelayoutingSubtree && enclosingPaginationLayer(RenderLayer::IncludeCompositedPaginatedLayers)) 892 flags.add(RenderLayer::UpdatePagination); 893 return flags; 894 }; 895 880 896 LOG(Compositing, "RenderLayer %p updateLayerPositionsAfterLayout", this); 881 897 RenderGeometryMap geometryMap(UseTransforms); 882 if ( this != rootLayer)898 if (!isRenderViewLayer()) 883 899 geometryMap.pushMappingsToAncestor(parent(), nullptr); 884 updateLayerPositions(&geometryMap, flags); 900 901 updateLayerPositions(&geometryMap, updateLayerPositionFlags(isRelayoutingSubtree, didFullRepaint)); 885 902 } 886 903 … … 1169 1186 if (newBlendMode != static_cast<BlendMode>(m_blendMode)) 1170 1187 m_blendMode = static_cast<unsigned>(newBlendMode); 1188 } 1189 1190 void RenderLayer::willRemoveChildWithBlendMode() 1191 { 1192 parent()->dirtyAncestorChainHasBlendingDescendants(); 1171 1193 } 1172 1194 -
trunk/Source/WebCore/rendering/RenderLayer.h
r249045 r249080 141 141 friend class RenderReplica; 142 142 friend class RenderLayerFilters; 143 friend class RenderLayerBacking; 144 friend class RenderLayerCompositor; 143 145 144 146 explicit RenderLayer(RenderLayerModelObject&); … … 530 532 bool canRender3DTransforms() const; 531 533 532 enum UpdateLayerPositionsFlag { 533 CheckForRepaint = 1 << 0, 534 NeedsFullRepaintInBacking = 1 << 1, 535 ContainingClippingLayerChangedSize = 1 << 2, 536 UpdatePagination = 1 << 3, 537 SeenFixedLayer = 1 << 4, 538 SeenTransformedLayer = 1 << 5, 539 Seen3DTransformedLayer = 1 << 6, 540 SeenCompositedScrollingLayer = 1 << 7, 541 }; 542 static constexpr OptionSet<UpdateLayerPositionsFlag> updateLayerPositionsDefaultFlags() { return { CheckForRepaint }; } 543 544 void updateLayerPositionsAfterLayout(const RenderLayer* rootLayer, OptionSet<UpdateLayerPositionsFlag>); 534 void updateLayerPositionsAfterStyleChange(); 535 void updateLayerPositionsAfterLayout(bool isRelayoutingSubtree, bool didFullRepaint); 545 536 546 537 void updateLayerPositionsAfterOverflowScroll(); … … 560 551 #if ENABLE(CSS_COMPOSITING) 561 552 void updateBlendMode(); 553 void willRemoveChildWithBlendMode(); 562 554 #endif 563 555 … … 987 979 void updateScrollbarsAfterLayout(); 988 980 981 enum UpdateLayerPositionsFlag { 982 CheckForRepaint = 1 << 0, 983 NeedsFullRepaintInBacking = 1 << 1, 984 ContainingClippingLayerChangedSize = 1 << 2, 985 UpdatePagination = 1 << 3, 986 SeenFixedLayer = 1 << 4, 987 SeenTransformedLayer = 1 << 5, 988 Seen3DTransformedLayer = 1 << 6, 989 SeenCompositedScrollingLayer = 1 << 7, 990 }; 991 static constexpr OptionSet<UpdateLayerPositionsFlag> updateLayerPositionsDefaultFlags() { return { CheckForRepaint }; } 992 989 993 // Returns true if the position changed. 990 994 bool updateLayerPosition(OptionSet<UpdateLayerPositionsFlag>* = nullptr); … … 1172 1176 bool mustCompositeForIndirectReasons() const { return m_indirectCompositingReason; } 1173 1177 1174 friend class RenderLayerBacking;1175 friend class RenderLayerCompositor;1176 friend class RenderLayerModelObject;1177 1178 1178 LayoutUnit overflowTop() const; 1179 1179 LayoutUnit overflowBottom() const; -
trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp
r248846 r249080 172 172 if (parent() && !needsLayout() && containingBlock()) { 173 173 layer()->setRepaintStatus(NeedsFullRepaint); 174 layer()->updateLayerPositions ();174 layer()->updateLayerPositionsAfterStyleChange(); 175 175 } 176 176 } … … 178 178 #if ENABLE(CSS_COMPOSITING) 179 179 if (oldStyle->hasBlendMode()) 180 layer()-> parent()->dirtyAncestorChainHasBlendingDescendants();180 layer()->willRemoveChildWithBlendMode(); 181 181 #endif 182 182 setHasTransformRelatedProperty(false); // All transform-related propeties force layers, so we know we don't have one or the object doesn't support them.
Note:
See TracChangeset
for help on using the changeset viewer.