Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(881)

Unified Diff: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h

Issue 2393673004: reflow comments in core/layout/compositing,core/observer (Closed)
Patch Set: comments (heh!) Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h
index 88a4d9bcfb2125717b80a5157c0bcfcf9d15562a..c83206a1dda69d6eea48bdde6783e8da572f2744 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h
@@ -39,17 +39,20 @@ namespace blink {
class PaintLayerCompositor;
-// A GraphicsLayerPaintInfo contains all the info needed to paint a partial subtree of Layers into a GraphicsLayer.
+// A GraphicsLayerPaintInfo contains all the info needed to paint a partial
+// subtree of Layers into a GraphicsLayer.
struct GraphicsLayerPaintInfo {
DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
PaintLayer* paintLayer;
LayoutRect compositedBounds;
- // The clip rect to apply, in the local coordinate space of the squashed layer, when painting it.
+ // The clip rect to apply, in the local coordinate space of the squashed
+ // layer, when painting it.
IntRect localClipRectForSquashedLayer;
- // Offset describing where this squashed Layer paints into the shared GraphicsLayer backing.
+ // Offset describing where this squashed Layer paints into the shared
+ // GraphicsLayer backing.
IntSize offsetFromLayoutObject;
bool offsetFromLayoutObjectSet;
@@ -64,9 +67,9 @@ enum GraphicsLayerUpdateScope {
};
// CompositedLayerMapping keeps track of how PaintLayers correspond to
-// GraphicsLayers of the composited layer tree. Each instance of CompositedLayerMapping
-// manages a small cluster of GraphicsLayers and the references to which Layers
-// and paint phases contribute to each GraphicsLayer.
+// GraphicsLayers of the composited layer tree. Each instance of
+// CompositedLayerMapping manages a small cluster of GraphicsLayers and the
+// references to which Layers and paint phases contribute to each GraphicsLayer.
//
// - If a PaintLayer is composited,
// - if it paints into its own backings (GraphicsLayers), it owns a
@@ -75,7 +78,8 @@ enum GraphicsLayerUpdateScope {
// - if it paints into grouped backing (i.e. it's squashed), it has a pointer
// (PaintLayer::groupedMapping()) to the CompositedLayerMapping into which
// the PaintLayer is squashed;
-// - Otherwise the PaintLayer doesn't own or directly reference any CompositedLayerMapping.
+// - Otherwise the PaintLayer doesn't own or directly reference any
+// CompositedLayerMapping.
class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
WTF_MAKE_NONCOPYABLE(CompositedLayerMapping);
USING_FAST_MALLOC(CompositedLayerMapping);
@@ -172,7 +176,8 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
void positionOverflowControlsLayers();
- // Returns true if the assignment actually changed the assigned squashing layer.
+ // Returns true if the assignment actually changed the assigned squashing
+ // layer.
bool updateSquashingLayerAssignment(PaintLayer* squashedLayer,
size_t nextSquashedLayerIndex);
void removeLayerFromSquashingGraphicsLayer(const PaintLayer*);
@@ -269,7 +274,8 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
return m_squashingLayerOffsetFromTransformedAncestor;
}
- // If there is a squashed layer painting into this CLM that is an ancestor of the given LayoutObject, return it. Otherwise return nullptr.
+ // If there is a squashed layer painting into this CLM that is an ancestor of
+ // the given LayoutObject, return it. Otherwise return nullptr.
const GraphicsLayerPaintInfo* containingSquashedLayer(
const LayoutObject*,
unsigned maxSquashedLayerIndex);
@@ -300,11 +306,13 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
const Vector<GraphicsLayerPaintInfo>& layers,
unsigned maxSquashedLayerIndex);
- // Paints the scrollbar part associated with the given graphics layer into the given context.
+ // Paints the scrollbar part associated with the given graphics layer into the
+ // given context.
void paintScrollableArea(const GraphicsLayer*,
GraphicsContext&,
const IntRect& interestRect) const;
- // Returns whether the given layer is part of the scrollable area, if any, associated with this mapping.
+ // Returns whether the given layer is part of the scrollable area, if any,
+ // associated with this mapping.
bool isScrollableAreaLayer(const GraphicsLayer*) const;
// Helper methods to updateGraphicsLayerGeometry:
@@ -423,9 +431,11 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
bool paintsChildren() const;
- // Returns true if this layer has content that needs to be displayed by painting into the backing store.
+ // Returns true if this layer has content that needs to be displayed by
+ // painting into the backing store.
bool containsPaintedContent() const;
- // Returns true if the Layer just contains an image that we can composite directly.
+ // Returns true if the Layer just contains an image that we can composite
+ // directly.
bool isDirectlyCompositedImage() const;
void updateImageContents();
@@ -446,48 +456,55 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
GraphicsContext&,
const IntRect& clip) const;
- // Computes the background clip rect for the given squashed layer, up to any containing layer that is squashed into the
- // same squashing layer and contains this squashed layer's clipping ancestor.
- // The clip rect is returned in the coordinate space of the given squashed layer.
- // If there is no such containing layer, returns the infinite rect.
- // FIXME: unify this code with the code that sets up m_ancestorClippingLayer. They are doing very similar things.
+ // Computes the background clip rect for the given squashed layer, up to any
+ // containing layer that is squashed into the same squashing layer and
+ // contains this squashed layer's clipping ancestor. The clip rect is
+ // returned in the coordinate space of the given squashed layer. If there is
+ // no such containing layer, returns the infinite rect.
+ // FIXME: unify this code with the code that sets up m_ancestorClippingLayer.
+ // They are doing very similar things.
static IntRect localClipRectForSquashedLayer(
const PaintLayer& referenceLayer,
const GraphicsLayerPaintInfo&,
const Vector<GraphicsLayerPaintInfo>& layers);
- // Return true if |m_owningLayer|'s compositing ancestor is not a descendant (inclusive) of the
- // clipping container for |m_owningLayer|.
+ // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
+ // (inclusive) of the clipping container for |m_owningLayer|.
bool owningLayerClippedByLayerNotAboveCompositedAncestor(
const PaintLayer* scrollParent);
const PaintLayer* scrollParent();
- // Clear the groupedMapping entry on the layer at the given index, only if that layer does
- // not appear earlier in the set of layers for this object.
+ // Clear the groupedMapping entry on the layer at the given index, only if
+ // that layer does not appear earlier in the set of layers for this object.
bool invalidateLayerIfNoPrecedingEntry(size_t);
PaintLayer& m_owningLayer;
- // The hierarchy of layers that is maintained by the CompositedLayerMapping looks like this:
+ // The hierarchy of layers that is maintained by the CompositedLayerMapping
+ // looks like this:
//
// + m_ancestorClippingLayer [OPTIONAL]
// + m_graphicsLayer
// + m_childTransformLayer [OPTIONAL]
- // | + m_childContainmentLayer [OPTIONAL] <-OR-> m_scrollingLayer [OPTIONAL]
- // | + m_scrollingContentsLayer [Present iff m_scrollingLayer is present]
- // + m_overflowControlsAncestorClippingLayer [OPTIONAL] // *The overflow controls may need to be repositioned in the
- // + m_overflowControlsHostLayer [OPTIONAL] // graphics layer tree by the RLC to ensure that they stack
- // + m_layerForVerticalScrollbar [OPTIONAL] // above scrolling content.
+ // | + m_childContainmentLayer [OPTIONAL]
+ // | <-OR->
+ // | (m_scrollingLayer + m_scrollingContentsLayer) [OPTIONAL]
+ // + m_overflowControlsAncestorClippingLayer [OPTIONAL]
+ // + m_overflowControlsHostLayer [OPTIONAL]
+ // + m_layerForVerticalScrollbar [OPTIONAL]
// + m_layerForHorizontalScrollbar [OPTIONAL]
// + m_layerForScrollCorner [OPTIONAL]
+ // The overflow controls may need to be repositioned in the graphics layer
+ // tree by the RLC to ensure that they stack above scrolling content.
//
- // We need an ancestor clipping layer if our clipping ancestor is not our ancestor in the
- // clipping tree. Here's what that might look like.
+ // We need an ancestor clipping layer if our clipping ancestor is not our
+ // ancestor in the clipping tree. Here's what that might look like.
//
// Let A = the clipping ancestor,
// B = the clip descendant, and
- // SC = the stacking context that is the ancestor of A and B in the stacking tree.
+ // SC = the stacking context that is the ancestor of A and B in the
+ // stacking tree.
//
// SC
// + A = m_graphicsLayer
@@ -499,70 +516,87 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
// + m_graphicsLayer
// + ...
//
- // In this case B is clipped by another layer that doesn't happen to be its ancestor: A.
- // So we create an ancestor clipping layer for B, [+], which ensures that B is clipped
- // as if it had been A's descendant.
- std::unique_ptr<GraphicsLayer>
- m_ancestorClippingLayer; // Only used if we are clipped by an ancestor which is not a stacking context.
+ // In this case B is clipped by another layer that doesn't happen to be its
+ // ancestor: A. So we create an ancestor clipping layer for B, [+], which
+ // ensures that B is clipped as if it had been A's descendant.
+
+ // Only used if we are clipped by an ancestor which is not a stacking context.
+ std::unique_ptr<GraphicsLayer> m_ancestorClippingLayer;
std::unique_ptr<GraphicsLayer> m_graphicsLayer;
- std::unique_ptr<GraphicsLayer>
- m_childContainmentLayer; // Only used if we have clipping on a stacking context with compositing children.
- std::unique_ptr<GraphicsLayer>
- m_childTransformLayer; // Only used if we have perspective.
- std::unique_ptr<GraphicsLayer>
- m_scrollingLayer; // Only used if the layer is using composited scrolling.
- std::unique_ptr<GraphicsLayer>
- m_scrollingContentsLayer; // Only used if the layer is using composited scrolling.
-
- // This layer is also added to the hierarchy by the RLB, but in a different way than
- // the layers above. It's added to m_graphicsLayer as its mask layer (naturally) if
- // we have a mask, and isn't part of the typical hierarchy (it has no children).
- std::unique_ptr<GraphicsLayer> m_maskLayer; // Only used if we have a mask.
- std::unique_ptr<GraphicsLayer>
- m_childClippingMaskLayer; // Only used if we have to clip child layers or accelerated contents with border radius or clip-path.
-
- // There are two other (optional) layers whose painting is managed by the CompositedLayerMapping,
- // but whose position in the hierarchy is maintained by the PaintLayerCompositor. These
- // are the foreground and background layers. The foreground layer exists if we have composited
- // descendants with negative z-order. We need the extra layer in this case because the layer
- // needs to draw both below (for the background, say) and above (for the normal flow content, say)
- // the negative z-order descendants and this is impossible with a single layer. The RLC handles
- // inserting m_foregroundLayer in the correct position in our descendant list for us (right after
- // the neg z-order dsecendants).
+
+ // Only used if we have clipping on a stacking context with compositing
+ // children.
+ std::unique_ptr<GraphicsLayer> m_childContainmentLayer;
+
+ // Only used if we have perspective.
+ std::unique_ptr<GraphicsLayer> m_childTransformLayer;
+
+ // Only used if the layer is using composited scrolling.
+ std::unique_ptr<GraphicsLayer> m_scrollingLayer;
+
+ // Only used if the layer is using composited scrolling.
+ std::unique_ptr<GraphicsLayer> m_scrollingContentsLayer;
+
+ // This layer is also added to the hierarchy by the RLB, but in a different
+ // way than the layers above. It's added to m_graphicsLayer as its mask layer
+ // (naturally) if we have a mask, and isn't part of the typical hierarchy (it
+ // has no children).
+ // Only used if we have a mask.
+ std::unique_ptr<GraphicsLayer> m_maskLayer;
+
+ // Only used if we have to clip child layers or accelerated contents with
+ // border radius or clip-path.
+ std::unique_ptr<GraphicsLayer> m_childClippingMaskLayer;
+
+ // There are two other (optional) layers whose painting is managed by the
+ // CompositedLayerMapping, but whose position in the hierarchy is maintained
+ // by the PaintLayerCompositor. These are the foreground and background
+ // layers. The foreground layer exists if we have composited descendants with
+ // negative z-order. We need the extra layer in this case because the layer
+ // needs to draw both below (for the background, say) and above (for the
+ // normal flow content, say) the negative z-order descendants and this is
+ // impossible with a single layer. The RLC handles inserting m_foregroundLayer
+ // in the correct position in our descendant list for us (right after the neg
+ // z-order dsecendants).
//
- // The background layer is only created if this is the root layer and our background is entirely
- // fixed. In this case we want to put the background in a separate composited layer so that when
- // we scroll, we don't have to re-raster the background into position. This layer is also inserted
- // into the tree by the RLC as it gets a special home. This layer becomes a descendant of the
- // frame clipping layer. That is:
+ // The background layer is only created if this is the root layer and our
+ // background is entirely fixed. In this case we want to put the background in
+ // a separate composited layer so that when we scroll, we don't have to
+ // re-raster the background into position. This layer is also inserted into
+ // the tree by the RLC as it gets a special home. This layer becomes a
+ // descendant of the frame clipping layer. That is:
// ...
// + frame clipping layer
// + m_backgroundLayer
// + frame scrolling layer
// + root content layer
//
- // With the hierarchy set up like this, the root content layer is able to scroll without affecting
- // the background layer (or paint invalidation).
- std::unique_ptr<GraphicsLayer>
- m_foregroundLayer; // Only used in cases where we need to draw the foreground separately.
- std::unique_ptr<GraphicsLayer>
- m_backgroundLayer; // Only used in cases where we need to draw the background separately.
+ // With the hierarchy set up like this, the root content layer is able to
+ // scroll without affecting the background layer (or paint invalidation).
+
+ // Only used in cases where we need to draw the foreground separately.
+ std::unique_ptr<GraphicsLayer> m_foregroundLayer;
+
+ // Only used in cases where we need to draw the background separately.
+ std::unique_ptr<GraphicsLayer> m_backgroundLayer;
std::unique_ptr<GraphicsLayer> m_layerForHorizontalScrollbar;
std::unique_ptr<GraphicsLayer> m_layerForVerticalScrollbar;
std::unique_ptr<GraphicsLayer> m_layerForScrollCorner;
- // This layer contains the scrollbar and scroll corner layers and clips them to the border box
- // bounds of our LayoutObject. It is usually added to m_graphicsLayer, but may be reparented by
- // GraphicsLayerTreeBuilder to ensure that scrollbars appear above scrolling content.
+ // This layer contains the scrollbar and scroll corner layers and clips them
+ // to the border box bounds of our LayoutObject. It is usually added to
+ // m_graphicsLayer, but may be reparented by GraphicsLayerTreeBuilder to
+ // ensure that scrollbars appear above scrolling content.
std::unique_ptr<GraphicsLayer> m_overflowControlsHostLayer;
- // The reparented overflow controls sometimes need to be clipped by a non-ancestor. In just the same
- // way we need an ancestor clipping layer to clip this CLM's internal hierarchy, we add another layer
- // to clip the overflow controls. We could combine this with m_overflowControlsHostLayer, but that
- // would require manually intersecting their clips, and shifting the overflow controls to compensate
- // for this clip's offset. By using a separate layer, the overflow controls can remain ignorant of
- // ancestor clipping.
+ // The reparented overflow controls sometimes need to be clipped by a
+ // non-ancestor. In just the same way we need an ancestor clipping layer to
+ // clip this CLM's internal hierarchy, we add another layer to clip the
+ // overflow controls. We could combine this with m_overflowControlsHostLayer,
+ // but that would require manually intersecting their clips, and shifting the
+ // overflow controls to compensate for this clip's offset. By using a separate
+ // layer, the overflow controls can remain ignorant of ancestor clipping.
std::unique_ptr<GraphicsLayer> m_overflowControlsAncestorClippingLayer;
// A squashing CLM has two possible squashing-related structures.
@@ -579,12 +613,19 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
// + m_graphicsLayer
// + m_squashingLayer
//
- // Stacking children of a squashed layer receive graphics layers that are parented to the compositd ancestor of the
- // squashed layer (i.e. nearest enclosing composited layer that is not squashed).
- std::unique_ptr<GraphicsLayer>
- m_squashingContainmentLayer; // Only used if any squashed layers exist and m_squashingContainmentLayer is not present, to contain the squashed layers as siblings to the rest of the GraphicsLayer tree chunk.
- std::unique_ptr<GraphicsLayer>
- m_squashingLayer; // Only used if any squashed layers exist, this is the backing that squashed layers paint into.
+ // Stacking children of a squashed layer receive graphics layers that are
+ // parented to the compositd ancestor of the squashed layer (i.e. nearest
+ // enclosing composited layer that is not
+ // squashed).
+
+ // Only used if any squashed layers exist and m_squashingContainmentLayer is
+ // not present, to contain the squashed layers as siblings to the rest of the
+ // GraphicsLayer tree chunk.
+ std::unique_ptr<GraphicsLayer> m_squashingContainmentLayer;
+
+ // Only used if any squashed layers exist, this is the backing that squashed
+ // layers paint into.
+ std::unique_ptr<GraphicsLayer> m_squashingLayer;
Vector<GraphicsLayerPaintInfo> m_squashedLayers;
LayoutPoint m_squashingLayerOffsetFromTransformedAncestor;
@@ -592,8 +633,9 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
LayoutSize m_contentOffsetInCompositingLayer;
- // We keep track of the scrolling contents offset, so that when it changes we can notify the ScrollingCoordinator, which
- // passes on main-thread scrolling updates to the compositor.
+ // We keep track of the scrolling contents offset, so that when it changes we
+ // can notify the ScrollingCoordinator, which passes on main-thread scrolling
+ // updates to the compositor.
DoubleSize m_scrollingContentsOffset;
unsigned m_contentOffsetInCompositingLayerDirty : 1;
@@ -604,7 +646,8 @@ class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient {
unsigned m_backgroundLayerPaintsFixedRootBackground : 1;
unsigned m_scrollingContentsAreEmpty : 1;
- // Keep track of whether the background is painted onto the scrolling contents layer for invalidations.
+ // Keep track of whether the background is painted onto the scrolling contents
+ // layer for invalidations.
unsigned m_backgroundPaintsOntoScrollingContentsLayer : 1;
friend class CompositedLayerMappingTest;
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698