| 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 5757694cf4caa5d19d02c67548108868b68b706a..24464166944f5d0fc7ea30cd2f9823b7446bd7fc 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.h
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.h
|
| @@ -1657,9 +1657,12 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
|
| // Convenience mutator that clears paint invalidation flags and this object
|
| // and its descendants' needs-paint-property-update flags.
|
| void clearPaintFlags() {
|
| + DCHECK_EQ(m_layoutObject.document().lifecycle().state(),
|
| + DocumentLifecycle::InPrePaint);
|
| m_layoutObject.clearPaintInvalidationFlags();
|
| - m_layoutObject.clearNeedsPaintPropertyUpdate();
|
| - m_layoutObject.clearDescendantNeedsPaintPropertyUpdate();
|
| + m_layoutObject.m_bitfields.setNeedsPaintPropertyUpdate(false);
|
| + m_layoutObject.m_bitfields.setSubtreeNeedsPaintPropertyUpdate(false);
|
| + m_layoutObject.m_bitfields.setDescendantNeedsPaintPropertyUpdate(false);
|
| }
|
| void setShouldDoFullPaintInvalidation(PaintInvalidationReason reason) {
|
| m_layoutObject.setShouldDoFullPaintInvalidation(reason);
|
| @@ -1696,6 +1699,16 @@ 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.
|
| + void setOnlyThisNeedsPaintPropertyUpdateForTesting() {
|
| + m_layoutObject.m_bitfields.setNeedsPaintPropertyUpdate(true);
|
| + }
|
| + void clearNeedsPaintPropertyUpdateForTesting() {
|
| + m_layoutObject.m_bitfields.setNeedsPaintPropertyUpdate(false);
|
| + }
|
| +#endif
|
|
|
| protected:
|
| friend class PaintPropertyTreeBuilder;
|
| @@ -1728,27 +1741,19 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
|
| // updated, setNeedsPaintPropertyUpdate marks all ancestors as having a
|
| // descendant needing a paint property update too.
|
| void setNeedsPaintPropertyUpdate();
|
| -#if DCHECK_IS_ON()
|
| - // Same as setNeedsPaintPropertyUpdate() but does not mark ancestors as
|
| - // having a descendant needing a paint property update.
|
| - void setOnlyThisNeedsPaintPropertyUpdateForTesting() {
|
| - m_bitfields.setNeedsPaintPropertyUpdate(true);
|
| - }
|
| -#endif
|
| bool needsPaintPropertyUpdate() const {
|
| return m_bitfields.needsPaintPropertyUpdate();
|
| }
|
| - void clearNeedsPaintPropertyUpdate() {
|
| - DCHECK_EQ(document().lifecycle().state(), DocumentLifecycle::InPrePaint);
|
| - m_bitfields.setNeedsPaintPropertyUpdate(false);
|
| + void setSubtreeNeedsPaintPropertyUpdate() {
|
| + m_bitfields.setSubtreeNeedsPaintPropertyUpdate(true);
|
| + m_bitfields.setNeedsPaintPropertyUpdate(true);
|
| + }
|
| + bool subtreeNeedsPaintPropertyUpdate() const {
|
| + return m_bitfields.subtreeNeedsPaintPropertyUpdate();
|
| }
|
| bool descendantNeedsPaintPropertyUpdate() const {
|
| return m_bitfields.descendantNeedsPaintPropertyUpdate();
|
| }
|
| - void clearDescendantNeedsPaintPropertyUpdate() {
|
| - DCHECK_EQ(document().lifecycle().state(), DocumentLifecycle::InPrePaint);
|
| - m_bitfields.setDescendantNeedsPaintPropertyUpdate(false);
|
| - }
|
| // Main thread scrolling reasons require fully updating paint propeties of all
|
| // ancestors (see: ScrollPaintPropertyNode.h).
|
| void setAncestorsNeedPaintPropertyUpdateForMainThreadScrolling();
|
| @@ -2149,6 +2154,7 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
|
| m_hasPreviousSelectionVisualRect(false),
|
| m_hasPreviousBoxGeometries(false),
|
| m_needsPaintPropertyUpdate(true),
|
| + m_subtreeNeedsPaintPropertyUpdate(true),
|
| m_descendantNeedsPaintPropertyUpdate(true),
|
| m_backgroundChangedSinceLastPaintInvalidation(false),
|
| m_positionedState(IsStaticallyPositioned),
|
| @@ -2322,6 +2328,9 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
|
| // Whether the paint properties need to be updated. For more details, see
|
| // LayoutObject::needsPaintPropertyUpdate().
|
| ADD_BOOLEAN_BITFIELD(needsPaintPropertyUpdate, NeedsPaintPropertyUpdate);
|
| + // Whether paint properties of the whole subtree need to be updated.
|
| + ADD_BOOLEAN_BITFIELD(subtreeNeedsPaintPropertyUpdate,
|
| + SubtreeNeedsPaintPropertyUpdate)
|
| // Whether the paint properties of a descendant need to be updated. For more
|
| // details, see LayoutObject::descendantNeedsPaintPropertyUpdate().
|
| ADD_BOOLEAN_BITFIELD(descendantNeedsPaintPropertyUpdate,
|
| @@ -2332,7 +2341,7 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
|
|
|
| protected:
|
| // Use protected to avoid warning about unused variable.
|
| - unsigned m_unusedBits : 7;
|
| + unsigned m_unusedBits : 6;
|
|
|
| private:
|
| // This is the cached 'position' value of this object
|
|
|