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 |