| Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| index 2499b0365de08b2b19824780c8af16bcf705f6f5..f4b615a98126bd464e28e838a099c7a38c4dd609 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| @@ -3388,6 +3388,18 @@ void LayoutObject::invalidateDisplayItemClientForNonCompositingDescendantsOf(con
|
| traverseNonCompositingDescendants(const_cast<LayoutObject&>(object), Functor(paintInvalidationContainer));
|
| }
|
|
|
| +void LayoutObject::invalidatePaintOfPreviousPaintInvalidationRect(const LayoutBoxModelObject& paintInvalidationContainer, PaintInvalidationReason reason) const
|
| +{
|
| + // These disablers are valid because we want to use the current compositing/invalidation status.
|
| + DisablePaintInvalidationStateAsserts invalidationDisabler;
|
| + DisableCompositingQueryAsserts compositingDisabler;
|
| +
|
| + LayoutRect invalidationRect = previousPaintInvalidationRect();
|
| + adjustInvalidationRectForCompositedScrolling(invalidationRect, paintInvalidationContainer);
|
| + invalidatePaintUsingContainer(paintInvalidationContainer, invalidationRect, PaintInvalidationLayer);
|
| + invalidateDisplayItemClients(paintInvalidationContainer, PaintInvalidationLayer, invalidationRect, invalidationRect);
|
| +}
|
| +
|
| void LayoutObject::invalidatePaintIncludingNonCompositingDescendants()
|
| {
|
| class Functor : public LayoutObjectTraversalFunctor {
|
| @@ -3395,10 +3407,7 @@ void LayoutObject::invalidatePaintIncludingNonCompositingDescendants()
|
| explicit Functor(const LayoutBoxModelObject& paintInvalidationContainer) : m_paintInvalidationContainer(paintInvalidationContainer) { }
|
| void operator()(LayoutObject& object) const override
|
| {
|
| - LayoutRect invalidationRect = object.previousPaintInvalidationRect();
|
| - object.adjustInvalidationRectForCompositedScrolling(invalidationRect, m_paintInvalidationContainer);
|
| - object.invalidatePaintUsingContainer(m_paintInvalidationContainer, invalidationRect, PaintInvalidationLayer);
|
| - object.invalidateDisplayItemClients(m_paintInvalidationContainer, PaintInvalidationLayer, invalidationRect, invalidationRect);
|
| + object.invalidatePaintOfPreviousPaintInvalidationRect(m_paintInvalidationContainer, PaintInvalidationLayer);
|
| }
|
| private:
|
| const LayoutBoxModelObject& m_paintInvalidationContainer;
|
| @@ -3425,6 +3434,15 @@ void LayoutObject::setShouldDoFullPaintInvalidationIncludingNonCompositingDescen
|
| traverseNonCompositingDescendants(*this, Functor());
|
| }
|
|
|
| +void LayoutObject::invalidatePaintIncludingNonSelfPaintingLayerDescendants(const LayoutBoxModelObject& paintInvalidationContainer)
|
| +{
|
| + invalidatePaintOfPreviousPaintInvalidationRect(paintInvalidationContainer, PaintInvalidationLayer);
|
| + for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling()) {
|
| + if (!child->hasLayer() || !toLayoutBoxModelObject(child)->layer()->isSelfPaintingLayer())
|
| + child->invalidatePaintIncludingNonSelfPaintingLayerDescendants(paintInvalidationContainer);
|
| + }
|
| +}
|
| +
|
| void LayoutObject::setIsSlowRepaintObject(bool isSlowRepaintObject)
|
| {
|
| ASSERT(frameView());
|
|
|