Index: third_party/WebKit/Source/core/input/TouchEventManager.cpp |
diff --git a/third_party/WebKit/Source/core/input/TouchEventManager.cpp b/third_party/WebKit/Source/core/input/TouchEventManager.cpp |
index 8cbaab593786745703e2db82a91ca6fa5f5c0b07..c6153a059c300b7b7546322d862906bf9025fa04 100644 |
--- a/third_party/WebKit/Source/core/input/TouchEventManager.cpp |
+++ b/third_party/WebKit/Source/core/input/TouchEventManager.cpp |
@@ -97,6 +97,7 @@ void TouchEventManager::clear() { |
m_touchPressed = false; |
m_touchScrollStarted = false; |
m_currentEvent = PlatformEvent::NoType; |
+ m_currentTouchAction = TouchActionAuto; |
} |
DEFINE_TRACE(TouchEventManager) { |
@@ -172,6 +173,7 @@ WebInputEventResult TouchEventManager::dispatchTouchEvents( |
if (allTouchesReleased) { |
m_touchSequenceDocument.clear(); |
m_touchSequenceUserGestureToken.clear(); |
+ m_currentTouchAction = TouchActionAuto; |
} |
WebInputEventResult eventResult = WebInputEventResult::NotHandled; |
@@ -187,13 +189,14 @@ WebInputEventResult TouchEventManager::dispatchTouchEvents( |
static_cast<PlatformTouchPoint::TouchState>(state))); |
for (const auto& eventTarget : changedTouches[state].m_targets) { |
EventTarget* touchEventTarget = eventTarget; |
- TouchEvent* touchEvent = TouchEvent::create( |
- touches, touchesByTarget.get(touchEventTarget), |
- changedTouches[state].m_touches.get(), eventName, |
- touchEventTarget->toNode()->document().domWindow(), |
- event.getModifiers(), event.cancelable(), |
- event.causesScrollingIfUncanceled(), |
- event.touchStartOrFirstTouchMove(), event.timestamp()); |
+ TouchEvent* touchEvent = |
+ TouchEvent::create(touches, touchesByTarget.get(touchEventTarget), |
+ changedTouches[state].m_touches.get(), eventName, |
+ touchEventTarget->toNode()->document().domWindow(), |
+ event.getModifiers(), event.cancelable(), |
+ event.causesScrollingIfUncanceled(), |
+ event.touchStartOrFirstTouchMove(), |
+ event.timestamp(), m_currentTouchAction); |
DispatchEventResult domDispatchResult = |
touchEventTarget->dispatchEvent(touchEvent); |
@@ -343,6 +346,7 @@ void TouchEventManager::updateTargetAndRegionMapsForTouchStarts( |
TouchActionUtil::computeEffectiveTouchAction(*touchInfo.touchNode); |
if (effectiveTouchAction != TouchActionAuto) |
m_frame->page()->chromeClient().setTouchAction(effectiveTouchAction); |
+ m_currentTouchAction = effectiveTouchAction; |
Rick Byers
2016/11/07 17:01:09
This isn't sufficient for multi-finger gestures.
dtapuska
2016/11/07 18:51:40
Done.
|
} |
} |
} |