Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
| index 4181c785c95ba9080af6ac10e5077d4bfd866908..10985cfa7b88464be2d9f7b8f7b4a913e84e0d45 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
| @@ -363,6 +363,8 @@ void LayoutBoxModelObject::invalidateTreeIfNeeded(PaintInvalidationState& paintI |
| // FIXME: This assert should be re-enabled when we move paint invalidation to after compositing update. crbug.com/360286 |
| // ASSERT(&newPaintInvalidationContainer == containerForPaintInvalidation()); |
| + LayoutRect previousPaintInvalidationRect = this->previousPaintInvalidationRect(); |
| + |
| PaintInvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationState, newPaintInvalidationContainer); |
| clearPaintInvalidationState(paintInvalidationState); |
| @@ -373,10 +375,18 @@ void LayoutBoxModelObject::invalidateTreeIfNeeded(PaintInvalidationState& paintI |
| if (reason == PaintInvalidationLocationChange) |
| childTreeWalkState.setForceSubtreeInvalidationWithinContainer(); |
| - // Workaround for crbug.com/533277. |
| + // TODO(wangxianzhu): This is a workaround for crbug.com/533277. Will remove when we enable paint offset caching. |
| if (reason != PaintInvalidationNone && hasPercentageTransform(styleRef())) |
| childTreeWalkState.setForceSubtreeInvalidationWithinContainer(); |
| + // TODO(wangxianzhu): This is a workaround for crbug.com/490725. We don't have enough saved information to do accurate check |
| + // of clipping change. Will remove when we remove rect-based paint invalidation. |
| + if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() |
| + && previousPaintInvalidationRect != this->previousPaintInvalidationRect() |
|
chrishtr
2015/09/28 17:38:13
If the rect changes, why didn't invalidatePaintIfN
Xianzhu
2015/09/28 17:49:05
These condition are for the ancestor whose clip ch
chrishtr
2015/09/28 22:16:29
Ok, but in what situation is invalidatePaintIfNeed
Xianzhu
2015/09/28 22:56:26
Let's take the added layout test as an example:
<
chrishtr
2015/09/28 23:38:13
This all sounds great, and makes sense. What I don
Xianzhu
2015/09/28 23:51:48
I see your question now :)
Simple style change (e
|
| + && !usesCompositedScrolling() |
| + && hasOverflowClip()) |
| + childTreeWalkState.setForceSubtreeInvalidationRectUpdateWithinContainer(); |
| + |
| invalidatePaintOfSubtreesIfNeeded(childTreeWalkState); |
| } |