Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/LayoutInline.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/LayoutInline.cpp b/third_party/WebKit/Source/core/layout/LayoutInline.cpp |
| index 3aaf7099f77e9a4afa201a8cb598d32408a04f4b..9186524c48a39deb844632d4c7c57fe6f9902ed5 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutInline.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutInline.cpp |
| @@ -1021,8 +1021,11 @@ LayoutRect LayoutInline::linesVisualOverflowBoundingBox() const |
| LayoutRect LayoutInline::absoluteClippedOverflowRect() const |
| { |
| - if (!continuation()) |
| - return clippedOverflowRect(view()); |
| + if (!continuation()) { |
| + LayoutRect rect = visualOverflowRect(); |
| + mapToVisibleRectInAncestorSpace(view(), rect); |
| + return rect; |
| + } |
| FloatRect floatResult; |
| LinesBoundingBoxGeneratorContext context(floatResult); |
| @@ -1033,34 +1036,24 @@ LayoutRect LayoutInline::absoluteClippedOverflowRect() const |
| for (LayoutBlock* currBlock = containingBlock(); currBlock && currBlock->isAnonymousBlock(); currBlock = toLayoutBlock(currBlock->nextSibling())) { |
| for (LayoutObject* curr = currBlock->firstChild(); curr; curr = curr->nextSibling()) { |
| - LayoutRect rect(curr->clippedOverflowRectForPaintInvalidation(view())); |
| + LayoutRect rect(curr->localOverflowRectForPaintInvalidation()); |
| context(FloatRect(rect)); |
| - if (curr == endContinuation) |
| - return LayoutRect(enclosingIntRect(floatResult)); |
| + if (curr == endContinuation) { |
| + LayoutRect rect(enclosingIntRect(floatResult)); |
| + mapToVisibleRectInAncestorSpace(view(), rect); |
| + return rect; |
| + } |
| } |
| } |
| return LayoutRect(); |
| } |
| -LayoutRect LayoutInline::clippedOverflowRectForPaintInvalidation(const LayoutBoxModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const |
| +LayoutRect LayoutInline::localOverflowRectForPaintInvalidation() const |
| { |
| // If we don't create line boxes, we don't have any invalidations to do. |
| if (!alwaysCreateLineBoxes()) |
| return LayoutRect(); |
| - return clippedOverflowRect(paintInvalidationContainer); |
| -} |
| - |
| -LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const |
| -{ |
| - if (style()->visibility() != VISIBLE) |
|
chrishtr
2016/03/24 01:05:42
Did you lose this optimization?
Xianzhu
2016/03/25 16:35:54
Done.
|
| - return LayoutRect(); |
| - |
| - LayoutRect overflowRect(visualOverflowRect()); |
| - if (overflowRect.isEmpty()) |
| - return overflowRect; |
| - |
| - mapToVisibleRectInAncestorSpace(paintInvalidationContainer, overflowRect, paintInvalidationState); |
| - return overflowRect; |
| + return visualOverflowRect(); |
| } |
| LayoutRect LayoutInline::visualOverflowRect() const |
| @@ -1081,13 +1074,8 @@ LayoutRect LayoutInline::visualOverflowRect() const |
| return overflowRect; |
| } |
| -void LayoutInline::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const |
| +void LayoutInline::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect) const |
| { |
| - if (paintInvalidationState && paintInvalidationState->canMapToAncestor(ancestor)) { |
| - paintInvalidationState->mapObjectRectToAncestor(*this, ancestor, rect); |
| - return; |
| - } |
| - |
| if (ancestor == this) |
| return; |
| @@ -1125,7 +1113,7 @@ void LayoutInline::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* a |
| return; |
| } |
| - container->mapToVisibleRectInAncestorSpace(ancestor, rect, nullptr); |
| + container->mapToVisibleRectInAncestorSpace(ancestor, rect); |
| } |
| LayoutSize LayoutInline::offsetFromContainer(const LayoutObject* container) const |