Index: third_party/WebKit/Source/core/input/ScrollManager.cpp |
diff --git a/third_party/WebKit/Source/core/input/ScrollManager.cpp b/third_party/WebKit/Source/core/input/ScrollManager.cpp |
index d0d2bb9dcbc7db5ce681f1974a7ce32c1c9f3516..e3b5e923f47d6315615e8e1547cb1bb0910c331c 100644 |
--- a/third_party/WebKit/Source/core/input/ScrollManager.cpp |
+++ b/third_party/WebKit/Source/core/input/ScrollManager.cpp |
@@ -83,6 +83,7 @@ void ScrollManager::recomputeScrollChain(const Node& startNode, |
DCHECK(startNode.layoutObject()); |
LayoutBox* curBox = startNode.layoutObject()->enclosingBox(); |
+ Element* documentElement = m_frame->document()->documentElement(); |
// Scrolling propagates along the containing block chain and ends at the |
// RootScroller element. The RootScroller element will have a custom |
@@ -98,13 +99,13 @@ void ScrollManager::recomputeScrollChain(const Node& startNode, |
// In normal circumastances, the documentElement will be the root |
// scroller but the documentElement itself isn't a containing block, |
// that'll be the document node rather than the element. |
- curElement = m_frame->document()->documentElement(); |
- DCHECK(!curElement || isEffectiveRootScroller(*curElement)); |
+ curElement = documentElement; |
} |
if (curElement) { |
scrollChain.push_front(DOMNodeIds::idForNode(curElement)); |
- if (isEffectiveRootScroller(*curElement)) |
+ if (isEffectiveRootScroller(*curElement) |
+ || curElement->isSameNode(documentElement)) |
break; |
} |