Index: third_party/WebKit/Source/core/layout/LayoutObject.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.h b/third_party/WebKit/Source/core/layout/LayoutObject.h |
index 6a4a5b07426a76c3decd8b6bec230ff82b425a26..67d3cacb81f77ff7e8250953bc5e9f39ef709a8f 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutObject.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.h |
@@ -1749,6 +1749,10 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, |
void setPreviousBackgroundObscured(bool b) { |
m_layoutObject.setPreviousBackgroundObscured(b); |
} |
+ void updatePreviousOutlineMayBeAffectedByDescendants() { |
+ m_layoutObject.setPreviousOutlineMayBeAffectedByDescendants( |
+ m_layoutObject.outlineMayBeAffectedByDescendants()); |
+ } |
void clearPreviousVisualRects() { |
m_layoutObject.clearPreviousVisualRects(); |
@@ -1756,6 +1760,7 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, |
void setNeedsPaintPropertyUpdate() { |
m_layoutObject.setNeedsPaintPropertyUpdate(); |
} |
+ |
#if DCHECK_IS_ON() |
// Same as setNeedsPaintPropertyUpdate() but does not mark ancestors as |
// having a descendant needing a paint property update. |
@@ -1871,6 +1876,13 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, |
m_bitfields.setBackgroundChangedSinceLastPaintInvalidation(true); |
} |
+ bool outlineMayBeAffectedByDescendants() const { |
+ return m_bitfields.outlineMayBeAffectedByDescendants(); |
+ } |
+ bool previousOutlineMayBeAffectedByDescendants() const { |
+ return m_bitfields.previousOutlineMayBeAffectedByDescendants(); |
+ } |
+ |
protected: |
enum LayoutObjectType { |
LayoutObjectBr, |
@@ -2049,6 +2061,13 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, |
m_bitfields.setContainsInlineWithOutlineAndContinuation(b); |
} |
+ void setOutlineMayBeAffectedByDescendants(bool b) { |
+ m_bitfields.setOutlineMayBeAffectedByDescendants(b); |
+ } |
+ void setPreviousOutlineMayBeAffectedByDescendants(bool b) { |
+ m_bitfields.setPreviousOutlineMayBeAffectedByDescendants(b); |
+ } |
+ |
private: |
// Adjusts a visual rect in the space of |m_previousVisualRect| to be in the |
// space of the |paintInvalidationContainer|, if needed. They can be different |
@@ -2215,6 +2234,8 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, |
m_subtreeNeedsPaintPropertyUpdate(true), |
m_descendantNeedsPaintPropertyUpdate(true), |
m_backgroundChangedSinceLastPaintInvalidation(false), |
+ m_outlineMayBeAffectedByDescendants(false), |
+ m_previousOutlineMayBeAffectedByDescendants(false), |
m_positionedState(IsStaticallyPositioned), |
m_selectionState(SelectionNone), |
m_backgroundObscurationState(BackgroundObscurationStatusInvalid), |
@@ -2397,9 +2418,18 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, |
ADD_BOOLEAN_BITFIELD(backgroundChangedSinceLastPaintInvalidation, |
BackgroundChangedSinceLastPaintInvalidation); |
+ // Whether shape of outline may be affected by any descendants. This is |
+ // updated before paint invalidation, checked during paint invalidation. |
+ ADD_BOOLEAN_BITFIELD(outlineMayBeAffectedByDescendants, |
+ OutlineMayBeAffectedByDescendants); |
+ // The outlineMayBeAffectedByDescendants status of the last paint |
+ // invalidation. |
+ ADD_BOOLEAN_BITFIELD(previousOutlineMayBeAffectedByDescendants, |
+ PreviousOutlineMayBeAffectedByDescendants); |
+ |
protected: |
// Use protected to avoid warning about unused variable. |
- unsigned m_unusedBits : 6; |
+ unsigned m_unusedBits : 4; |
private: |
// This is the cached 'position' value of this object |