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

Unified Diff: third_party/WebKit/Source/core/dom/IntersectionObservation.cpp

Issue 1740923004: IntersectionObserver: make exceptions match spec (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: ASSERT observer constructor succeeded if no exception was thrown Created 4 years, 10 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/dom/IntersectionObservation.cpp
diff --git a/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp b/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp
index 07364afadca65fdc6f581cff3c30b59b85b55292..29605403c1c1e09ee8c11852a2e6ff6a8df9b52c 100644
--- a/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp
+++ b/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp
@@ -28,7 +28,13 @@ Element* IntersectionObservation::target() const
return toElement(m_target.get());
}
-void IntersectionObservation::initializeGeometry(IntersectionGeometry& geometry)
+void IntersectionObservation::applyRootMargin(LayoutRect& rect) const
+{
+ if (m_shouldReportRootBounds)
+ m_observer->applyRootMargin(rect);
+}
+
+void IntersectionObservation::initializeGeometry(IntersectionGeometry& geometry) const
{
ASSERT(m_target);
LayoutObject* targetLayoutObject = target()->layoutObject();
@@ -43,7 +49,7 @@ void IntersectionObservation::initializeGeometry(IntersectionGeometry& geometry)
geometry.intersectionRect = geometry.targetRect;
}
-void IntersectionObservation::clipToRoot(LayoutRect& rect)
+void IntersectionObservation::clipToRoot(LayoutRect& rect) const
{
// Map and clip rect into root element coordinates.
// TODO(szager): the writing mode flipping needs a test.
@@ -54,27 +60,27 @@ void IntersectionObservation::clipToRoot(LayoutRect& rect)
if (rootLayoutObject->hasOverflowClip()) {
LayoutBox* rootLayoutBox = toLayoutBox(rootLayoutObject);
LayoutRect clipRect(LayoutPoint(), LayoutSize(rootLayoutBox->layer()->size()));
- m_observer->applyRootMargin(clipRect);
+ applyRootMargin(clipRect);
rootLayoutBox->flipForWritingMode(rect);
rect.intersect(clipRect);
rootLayoutBox->flipForWritingMode(rect);
}
}
-void IntersectionObservation::clipToFrameView(IntersectionGeometry& geometry)
+void IntersectionObservation::clipToFrameView(IntersectionGeometry& geometry) const
{
Node* rootNode = m_observer->rootNode();
LayoutObject* rootLayoutObject = m_observer->rootLayoutObject();
if (rootLayoutObject->isLayoutView()) {
geometry.rootRect = LayoutRect(toLayoutView(rootLayoutObject)->frameView()->visibleContentRect());
- m_observer->applyRootMargin(geometry.rootRect);
+ applyRootMargin(geometry.rootRect);
geometry.intersectionRect.intersect(geometry.rootRect);
} else {
if (rootLayoutObject->isBox())
geometry.rootRect = LayoutRect(toLayoutBox(rootLayoutObject)->absoluteContentBox());
else
geometry.rootRect = LayoutRect(rootLayoutObject->absoluteBoundingBoxRect());
- m_observer->applyRootMargin(geometry.rootRect);
+ applyRootMargin(geometry.rootRect);
}
LayoutPoint scrollPosition(rootNode->document().view()->scrollPosition());
@@ -104,7 +110,7 @@ static bool isContainingBlockChainDescendant(LayoutObject* descendant, LayoutObj
return descendant;
}
-bool IntersectionObservation::computeGeometry(IntersectionGeometry& geometry)
+bool IntersectionObservation::computeGeometry(IntersectionGeometry& geometry) const
{
// Pre-oilpan, there will be a delay between the time when the target Element gets deleted
// (because its ref count dropped to zero) and when this IntersectionObservation gets

Powered by Google App Engine
This is Rietveld 408576698