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 f7fefe576aff17d0c7013f36525d5b7ed36552cc..1aaf72e8575d0b23b68bf015d02acdbd33ea5c0b 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
@@ -1638,28 +1638,28 @@ LayoutRect LayoutObject::clippedOverflowRectForPaintInvalidation(const LayoutBox |
return LayoutRect(); |
} |
-void LayoutObject::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const |
+bool LayoutObject::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState, VisibleRectFlags visibleRectFlags) const |
{ |
+ // For any layout object that doesn't override this method (the main example is LayoutText), |
+ // the rect is assumed to be in the coordinate space of the object's parent. |
+ |
if (ancestor == this) |
- return; |
+ return true; |
- if (paintInvalidationState && paintInvalidationState->canMapToAncestor(ancestor)) { |
- paintInvalidationState->mapObjectRectToAncestor(*this, ancestor, rect); |
- return; |
- } |
+ if (paintInvalidationState && paintInvalidationState->canMapToAncestor(ancestor)) |
+ return paintInvalidationState->mapObjectRectToAncestor(*this, ancestor, rect, visibleRectFlags); |
if (LayoutObject* parent = this->parent()) { |
if (parent->hasOverflowClip()) { |
LayoutBox* parentBox = toLayoutBox(parent); |
parentBox->mapScrollingContentsRectToBoxSpace(rect); |
- if (parent != ancestor) |
- parentBox->applyOverflowClip(rect); |
- if (rect.isEmpty()) |
- return; |
+ if (parent != ancestor && !parentBox->applyOverflowClip(rect, visibleRectFlags)) |
+ return false; |
} |
- parent->mapToVisibleRectInAncestorSpace(ancestor, rect, nullptr); |
+ return parent->mapToVisibleRectInAncestorSpace(ancestor, rect, nullptr, visibleRectFlags); |
} |
+ return true; |
} |
void LayoutObject::dirtyLinesFromChangedChild(LayoutObject*) |