Index: Source/core/page/EventHandler.cpp |
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp |
index 0fc4367aae006628068faa666a0be06352bfad94..21ed824b1a70e8a6b4251948d86f695876461802 100644 |
--- a/Source/core/page/EventHandler.cpp |
+++ b/Source/core/page/EventHandler.cpp |
@@ -70,6 +70,7 @@ |
#include "core/page/DragController.h" |
#include "core/page/DragState.h" |
#include "core/page/EditorClient.h" |
+#include "core/page/EventWithHitTestResults.h" |
#include "core/page/FocusController.h" |
#include "core/page/FrameTree.h" |
#include "core/page/Page.h" |
@@ -2060,31 +2061,23 @@ |
bool EventHandler::handleGestureEvent(const PlatformGestureEvent& gestureEvent) |
{ |
+ TRACE_EVENT0("input", "EventHandler::handleGestureEvent"); |
+ |
// Propagation to inner frames is handled below this function. |
ASSERT(m_frame == m_frame->localFrameRoot()); |
// Scrolling-related gesture events invoke EventHandler recursively for each frame down |
// the chain, doing a single-frame hit-test per frame. This matches handleWheelEvent. |
- // FIXME: Add a test that traverses this path, e.g. for devtools overlay. |
+ // Perhaps we could simplify things by rewriting scroll handling to work inner frame |
+ // out, and then unify with other gesture events. |
if (gestureEvent.isScrollEvent()) |
return handleGestureScrollEvent(gestureEvent); |
+ // Non-scrolling related gesture events instead do a single cross-frame hit-test and |
+ // jump directly to the inner most frame. This matches handleMousePressEvent etc. |
+ |
// Hit test across all frames and do touch adjustment as necessary for the event type. |
GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEvent); |
- |
- return handleGestureEvent(targetedEvent); |
-} |
- |
-bool EventHandler::handleGestureEvent(const GestureEventWithHitTestResults& targetedEvent) |
-{ |
- TRACE_EVENT0("input", "EventHandler::handleGestureEvent"); |
- |
- // Propagation to inner frames is handled below this function. |
- ASSERT(m_frame == m_frame->localFrameRoot()); |
- |
- // Non-scrolling related gesture events do a single cross-frame hit-test and jump |
- // directly to the inner most frame. This matches handleMousePressEvent etc. |
- ASSERT(!targetedEvent.event().isScrollEvent()); |
// Route to the correct frame. |
if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) |
@@ -2140,8 +2133,6 @@ |
bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureEvent) |
{ |
- TRACE_EVENT0("input", "EventHandler::handleGestureScrollEvent"); |
- |
RefPtrWillBeRawPtr<Node> eventTarget = nullptr; |
RefPtr<Scrollbar> scrollbar; |
if (gestureEvent.type() != PlatformEvent::GestureScrollBegin) { |
@@ -2562,8 +2553,6 @@ |
GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGestureEvent& gestureEvent, bool readOnly) |
{ |
- TRACE_EVENT0("input", "EventHandler::targetGestureEvent"); |
- |
ASSERT(m_frame == m_frame->localFrameRoot()); |
// Scrolling events get hit tested per frame (like wheel events do). |
ASSERT(!gestureEvent.isScrollEvent()); |