Index: third_party/WebKit/Source/core/paint/PaintLayer.h |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.h b/third_party/WebKit/Source/core/paint/PaintLayer.h |
index 32cc020fd20abaf3b4e3d411f0ef0fba49985db8..ea3b2c5b57b10e986e827ac614f4dee990235b36 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayer.h |
+++ b/third_party/WebKit/Source/core/paint/PaintLayer.h |
@@ -282,6 +282,8 @@ public: |
PaintLayer* enclosingLayerForPaintInvalidationCrossingFrameBoundaries() const; |
+ PaintLayer* enclosingSelfPaintingLayer() const; |
+ |
bool hasAncestorWithFilterOutsets() const; |
bool canUseConvertToLayerCoords() const |
@@ -621,6 +623,11 @@ public: |
PaintLayerPainter::PaintResult previousPaintResult() const { return static_cast<PaintLayerPainter::PaintResult>(m_previousPaintResult); } |
void setPreviousPaintResult(PaintLayerPainter::PaintResult result) { m_previousPaintResult = static_cast<unsigned>(result); ASSERT(m_previousPaintResult == static_cast<unsigned>(result)); } |
+ // Used to skip PaintPhaseDescendantOutlinesOnly for layers that have never had descendant outlines. |
+ // Once it's set we never clear it because it's not easy to track if all outlines have been removed. |
+ bool needsPaintPhaseDescendantOutlines() const { return m_needsPaintPhaseDescendantOutlines; } |
+ void setNeedsPaintPhaseDescendantOutlines() { ASSERT(isSelfPaintingLayer()); m_needsPaintPhaseDescendantOutlines = true; } |
+ |
PaintTiming* paintTiming(); |
private: |
@@ -753,6 +760,8 @@ private: |
unsigned m_needsRepaint : 1; |
unsigned m_previousPaintResult : 1; // PaintLayerPainter::PaintResult |
+ unsigned m_needsPaintPhaseDescendantOutlines : 1; |
+ |
LayoutBoxModelObject* m_layoutObject; |
PaintLayer* m_parent; |