| Index: third_party/WebKit/Source/core/layout/LayoutView.cpp | 
| diff --git a/third_party/WebKit/Source/core/layout/LayoutView.cpp b/third_party/WebKit/Source/core/layout/LayoutView.cpp | 
| index f1ecdfa63692fe8c7e2134668be174c57723f868..5d0f05a46fa66b3b37af1e0f2d304e441827fa19 100644 | 
| --- a/third_party/WebKit/Source/core/layout/LayoutView.cpp | 
| +++ b/third_party/WebKit/Source/core/layout/LayoutView.cpp | 
| @@ -475,15 +475,15 @@ void LayoutView::invalidatePaintForViewAndCompositedLayers() | 
| compositor()->fullyInvalidatePaint(); | 
| } | 
|  | 
| -void LayoutView::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* invalidationState) const | 
| +bool LayoutView::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* invalidationState, VisibleRectFlags visibleRectFlags) const | 
| { | 
| -    mapToVisibleRectInAncestorSpace(ancestor, rect, IsNotFixedPosition, invalidationState); | 
| +    return mapToVisibleRectInAncestorSpace(ancestor, rect, IsNotFixedPosition, invalidationState, visibleRectFlags); | 
| } | 
|  | 
| -void LayoutView::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, ViewportConstrainedPosition viewportConstraint, const PaintInvalidationState* state) const | 
| +bool LayoutView::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, ViewportConstrainedPosition viewportConstraint, const PaintInvalidationState* state, VisibleRectFlags visibleRectFlags) const | 
| { | 
| if (document().printing()) | 
| -        return; | 
| +        return true; | 
|  | 
| if (style()->isFlippedBlocksWritingMode()) { | 
| // We have to flip by hand since the view's logical height has not been determined.  We | 
| @@ -502,17 +502,22 @@ void LayoutView::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* anc | 
|  | 
| ASSERT(ancestor); | 
| if (ancestor == this) | 
| -        return; | 
| +        return true; | 
|  | 
| Element* owner = document().ownerElement(); | 
| if (!owner) | 
| -        return; | 
| +        return true; | 
|  | 
| if (LayoutBox* obj = owner->layoutBox()) { | 
| if (!state || !state->viewClippingAndScrollOffsetDisabled()) { | 
| // Intersect the viewport with the paint invalidation rect. | 
| LayoutRect viewRectangle = viewRect(); | 
| -            rect.intersect(viewRectangle); | 
| +            if (visibleRectFlags & EdgeInclusive) { | 
| +                if (!rect.inclusiveIntersect(viewRectangle)) | 
| +                    return false; | 
| +            } else { | 
| +                rect.intersect(viewRectangle); | 
| +            } | 
|  | 
| // Adjust for scroll offset of the view. | 
| rect.moveBy(-viewRectangle.location()); | 
| @@ -520,8 +525,10 @@ void LayoutView::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* anc | 
|  | 
| // Adjust for frame border. | 
| rect.move(obj->contentBoxOffset()); | 
| -        obj->mapToVisibleRectInAncestorSpace(ancestor, rect, 0); | 
| +        return obj->mapToVisibleRectInAncestorSpace(ancestor, rect, 0, visibleRectFlags); | 
| } | 
| + | 
| +    return true; | 
| } | 
|  | 
| void LayoutView::adjustViewportConstrainedOffset(LayoutRect& rect, ViewportConstrainedPosition viewportConstraint) const | 
|  |