Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(871)

Unified Diff: third_party/WebKit/Source/core/layout/LayoutInline.cpp

Issue 1817693002: Support edge-inclusive intersections in mapToVisibleRectInAncestorSpace (Closed) Base URL: https://chromium.googlesource.com/chromium/src@intersection-observer-idle-callback
Patch Set: compiler warning fix Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 7ba75d8a781b2e2d97b46ee7965b49dc76bbe752..986a4c262c605924cdc84bfc6b19cc41ae68d782 100644
--- a/third_party/WebKit/Source/core/layout/LayoutInline.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutInline.cpp
@@ -1059,7 +1059,7 @@ LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn
if (overflowRect.isEmpty())
return overflowRect;
- mapToVisibleRectInAncestorSpace(paintInvalidationContainer, overflowRect, paintInvalidationState);
+ mapToVisibleRectInAncestorSpace(paintInvalidationContainer, overflowRect, paintInvalidationState, false);
return overflowRect;
}
@@ -1081,20 +1081,18 @@ LayoutRect LayoutInline::visualOverflowRect() const
return overflowRect;
}
-void LayoutInline::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const
+bool LayoutInline::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState, bool edgeInclusive) const
eae 2016/03/22 00:13:50 It's unclear to me why these method would need to
szager1 2016/03/22 00:55:48 mapToVisibleRectInAncestorSpace is used by Interse
{
- if (paintInvalidationState && paintInvalidationState->canMapToAncestor(ancestor)) {
- paintInvalidationState->mapObjectRectToAncestor(*this, ancestor, rect);
- return;
- }
+ if (paintInvalidationState && paintInvalidationState->canMapToAncestor(ancestor))
+ return paintInvalidationState->mapObjectRectToAncestor(*this, ancestor, rect, edgeInclusive);
if (ancestor == this)
- return;
+ return true;
bool ancestorSkipped;
LayoutObject* container = this->container(ancestor, &ancestorSkipped);
if (!container)
- return;
+ return true;
LayoutPoint topLeft = rect.location();
@@ -1112,20 +1110,18 @@ void LayoutInline::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* a
if (container->hasOverflowClip()) {
LayoutBox* containerBox = toLayoutBox(container);
containerBox->mapScrollingContentsRectToBoxSpace(rect);
- if (container != ancestor)
- containerBox->applyOverflowClip(rect);
- if (rect.isEmpty())
- return;
+ if (container != ancestor && !containerBox->applyOverflowClip(rect, edgeInclusive))
+ return false;
}
if (ancestorSkipped) {
// If the paintInvalidationContainer is below o, then we need to map the rect into paintInvalidationContainer's coordinates.
LayoutSize containerOffset = ancestor->offsetFromAncestorContainer(container);
rect.move(-containerOffset);
- return;
+ return true;
}
- container->mapToVisibleRectInAncestorSpace(ancestor, rect, paintInvalidationState);
+ return container->mapToVisibleRectInAncestorSpace(ancestor, rect, paintInvalidationState, edgeInclusive);
}
LayoutSize LayoutInline::offsetFromContainer(const LayoutObject* container) const

Powered by Google App Engine
This is Rietveld 408576698