Index: third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp |
diff --git a/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp b/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp |
index 910f0acb6335499ff75a55498a92e19851a02341..3f038a5aca64e81064dd9141112a696be001da35 100644 |
--- a/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp |
+++ b/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp |
@@ -429,19 +429,6 @@ ObjectPaintInvalidatorWithContext::computePaintInvalidationReason() { |
if (style.hasOutline()) |
return PaintInvalidationOutline; |
- bool locationChanged = m_context.newLocation != m_context.oldLocation; |
- |
- // If the bounds are the same then we know that none of the statements below |
- // can match, so we can early out. However, we can't return |
- // PaintInvalidationNone even if !locationChagned, but conservatively return |
- // PaintInvalidationIncremental because we are not sure whether paint |
- // invalidation is actually needed just based on information known to |
- // LayoutObject. For example, a LayoutBox may need paint invalidation if |
- // border box changes. |
- if (m_context.oldBounds == m_context.newBounds) |
- return locationChanged ? PaintInvalidationLocationChange |
- : PaintInvalidationIncremental; |
- |
// If the size is zero on one of our bounds then we know we're going to have |
// to do a full invalidation of either old bounds or new bounds. |
if (m_context.oldBounds.isEmpty()) |
@@ -456,10 +443,19 @@ ObjectPaintInvalidatorWithContext::computePaintInvalidationReason() { |
if (m_context.newBounds.location() != m_context.oldBounds.location()) |
return PaintInvalidationBoundsChange; |
- if (locationChanged) |
+ if (m_context.newLocation != m_context.oldLocation) |
return PaintInvalidationLocationChange; |
- return PaintInvalidationIncremental; |
+ // Incremental invalidation is only applicable to LayoutBoxes. Return |
+ // PaintInvalidationIncremental no matter if oldBounds and newBounds are equal |
+ // because a LayoutBox may need paint invalidation if its border box changes. |
+ if (m_object.isBox()) |
+ return PaintInvalidationIncremental; |
+ |
+ if (m_context.oldBounds != m_context.newBounds) |
+ return PaintInvalidationBoundsChange; |
+ |
+ return PaintInvalidationNone; |
} |
void ObjectPaintInvalidatorWithContext::invalidateSelectionIfNeeded( |
@@ -499,11 +495,6 @@ ObjectPaintInvalidatorWithContext::invalidatePaintIfNeededWithComputedReason( |
// selection rect regardless. |
invalidateSelectionIfNeeded(reason); |
- if (reason == PaintInvalidationIncremental) { |
- reason = m_context.oldBounds == m_context.newBounds ? PaintInvalidationNone |
- : PaintInvalidationFull; |
- } |
- |
switch (reason) { |
case PaintInvalidationNone: |
// TODO(trchen): Currently we don't keep track of paint offset of layout |