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

Unified Diff: Source/core/input/EventHandler.cpp

Issue 1236913004: Expose scroll customization for touch to JS (behind REF). (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add to leak expectations. Created 5 years, 3 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
« no previous file with comments | « Source/core/dom/Element.idl ('k') | Source/core/page/scrolling/ScrollCustomizationCallbacks.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/input/EventHandler.cpp
diff --git a/Source/core/input/EventHandler.cpp b/Source/core/input/EventHandler.cpp
index 7a7ed83811585d1682b8cabd481973016ae35ecb..3a33b3d9a6b371e4e96a54c24c9daf0328626ad9 100644
--- a/Source/core/input/EventHandler.cpp
+++ b/Source/core/input/EventHandler.cpp
@@ -201,14 +201,21 @@ void recomputeScrollChain(const LocalFrame& frame, const Node& startNode,
while (curBox && !curBox->isLayoutView()) {
Node* curNode = curBox->node();
// FIXME: this should reject more elements, as part of crbug.com/410974.
- if (curNode && curNode->isElementNode())
- scrollChain.prepend(toElement(curNode));
+ if (curNode && curNode->isElementNode()) {
+ Element* curElement = toElement(curNode);
+ if (curElement == frame.document()->scrollingElement())
+ break;
+ scrollChain.prepend(curElement);
+ }
curBox = curBox->containingBlock();
}
-
- // FIXME: we should exclude the document in some cases, as part
- // of crbug.com/410974.
- scrollChain.prepend(frame.document()->documentElement());
+ // TODO(tdresser): this should sometimes be excluded, as part of crbug.com/410974.
+ // We need to ensure that the scrollingElement is always part of
+ // the scroll chain. In quirks mode, when the scrollingElement is
+ // the body, some elements may use the documentElement as their
+ // containingBlock, so we ensure the scrollingElement is added
+ // here.
+ scrollChain.prepend(frame.document()->scrollingElement());
}
EventHandler::EventHandler(LocalFrame* frame)
@@ -303,9 +310,8 @@ void EventHandler::clear()
m_targetForTouchID.clear();
m_touchSequenceDocument.clear();
m_touchSequenceUserGestureToken.clear();
- m_scrollGestureHandlingNode = nullptr;
+ clearGestureScrollState();
m_lastGestureScrollOverWidget = false;
- m_previousGestureScrolledNode = nullptr;
m_scrollbarHandlingScrollGesture = nullptr;
m_touchPressed = false;
m_pointerIdManager.clear();
« no previous file with comments | « Source/core/dom/Element.idl ('k') | Source/core/page/scrolling/ScrollCustomizationCallbacks.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698