Chromium Code Reviews| Index: third_party/WebKit/Source/core/input/PointerEventManager.cpp |
| diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.cpp b/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
| index a4a0fa685e3d705a74c016139af1788c30837816..0a53c882f2ff435e5bb74e4fd82c91aa6868f9e6 100644 |
| --- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
| +++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
| @@ -454,8 +454,6 @@ void PointerEventManager::dispatchTouchPointerEvents( |
| touchInfo.targetFrame = touchInfo.touchNode->document().frame(); |
| } |
| - WebInputEventResult result = WebInputEventResult::NotHandled; |
| - |
| // Do not send pointer events for stationary touches or null targetFrame |
| if (touchInfo.touchNode |
| && touchPoint.state() != PlatformTouchPoint::TouchStationary |
| @@ -474,15 +472,20 @@ void PointerEventManager::dispatchTouchPointerEvents( |
| touchInfo.touchNode ? |
| touchInfo.touchNode->document().domWindow() : nullptr); |
| - result = sendTouchPointerEvent(touchInfo.touchNode, pointerEvent); |
| - } |
| - // TODO(crbug.com/507408): Right now we add the touch point only if |
| - // its pointer event is NotHandled (e.g. preventDefault is called in |
| - // the pointer event listener). This behavior needs to change as it |
| - // may create some inconsistent touch event sequence. |
| - if (result == WebInputEventResult::NotHandled) { |
| - touchInfos.append(touchInfo); |
| + WebInputEventResult result = sendTouchPointerEvent(touchInfo.touchNode, pointerEvent); |
| + |
| + // Queue the WebInputEventResult to allow suppressing mouse events |
| + // from gesture events. Since mouse events are fired only from |
| + // GestureTap and GestureLongPress events which are triggered by |
| + // single touches only, it is enough to queue the |
|
Rick Byers
2016/05/27 20:39:27
Not quite true - GestureTwoFingerTap behaves simil
mustaq
2016/05/30 15:14:26
I will update the comment to clarify it: TwoFinger
mustaq
2016/06/02 19:26:27
Clarified the comment. My last post seems wrong ab
|
| + // WebInputEventResult for only primary pointerdowns. |
| + if (pointerEvent->type() == EventTypeNames::pointerdown |
| + && pointerEvent->isPrimary()) { |
| + m_primaryPointerdownResults.append(result); |
|
Rick Byers
2016/05/27 20:39:27
Unfortunately I don't think we can currently guara
dtapuska
2016/05/27 20:54:07
I'd prefer if the information went up the stack an
mustaq
2016/05/30 15:14:26
Local sync seems unavoidable. I had uniqueTouchIds
mustaq
2016/06/02 19:26:27
As we suspected, both of these cases can happen, s
|
| + } |
| } |
| + |
| + touchInfos.append(touchInfo); |
| } |
| } |
| @@ -599,6 +602,7 @@ void PointerEventManager::clear() |
| m_touchEventManager.clear(); |
| m_inCanceledStateForPointerTypeTouch = false; |
| m_pointerEventFactory.clear(); |
| + m_primaryPointerdownResults.clear(); |
| m_nodeUnderPointer.clear(); |
| m_pointerCaptureTarget.clear(); |
| m_pendingPointerCaptureTarget.clear(); |