| 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 d6d452f8d44fe95c171f0237ece83568b6541477..9b4aa2ef2ab13df5d2211b36aef04922c648d15d 100644
|
| --- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp
|
| +++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp
|
| @@ -147,11 +147,9 @@ EventTarget* PointerEventManager::getEffectiveTargetForPointerEvent(
|
| return target;
|
| }
|
|
|
| -void PointerEventManager::sendMouseAndPossiblyPointerBoundaryEvents(
|
| - Node* exitedNode,
|
| +void PointerEventManager::sendMouseAndPointerBoundaryEvents(
|
| Node* enteredNode,
|
| - const PlatformMouseEvent& mouseEvent,
|
| - bool isFrameBoundaryTransition)
|
| + const PlatformMouseEvent& mouseEvent)
|
| {
|
| // Mouse event type does not matter as this pointerevent will only be used
|
| // to create boundary pointer events and its type will be overridden in
|
| @@ -165,14 +163,13 @@ void PointerEventManager::sendMouseAndPossiblyPointerBoundaryEvents(
|
| // stage. So if the event is not frame boundary transition it is only a
|
| // compatibility mouse event and we do not need to change pointer event
|
| // behavior regarding preventMouseEvent state in that case.
|
| - if (isFrameBoundaryTransition && dummyPointerEvent->buttons() == 0
|
| - && dummyPointerEvent->isPrimary()) {
|
| + if (dummyPointerEvent->buttons() == 0 && dummyPointerEvent->isPrimary()) {
|
| m_preventMouseEventForPointerType[toPointerTypeIndex(
|
| mouseEvent.pointerProperties().pointerType)] = false;
|
| }
|
|
|
| processCaptureAndPositionOfPointerEvent(dummyPointerEvent, enteredNode,
|
| - exitedNode, mouseEvent, true, isFrameBoundaryTransition);
|
| + mouseEvent, true);
|
| }
|
|
|
| void PointerEventManager::sendBoundaryEvents(
|
| @@ -406,9 +403,7 @@ WebInputEventResult PointerEventManager::sendTouchPointerEvent(
|
|
|
| WebInputEventResult PointerEventManager::sendMousePointerEvent(
|
| Node* target, const AtomicString& mouseEventType,
|
| - int clickCount, const PlatformMouseEvent& mouseEvent,
|
| - Node* lastNodeUnderMouse,
|
| - Node** newNodeUnderMouse)
|
| + const PlatformMouseEvent& mouseEvent)
|
| {
|
| PointerEvent* pointerEvent =
|
| m_pointerEventFactory.create(mouseEventType, mouseEvent,
|
| @@ -428,15 +423,8 @@ WebInputEventResult PointerEventManager::sendMousePointerEvent(
|
| }
|
| }
|
|
|
| - EventTarget* pointerEventTarget = processCaptureAndPositionOfPointerEvent(pointerEvent, target,
|
| - lastNodeUnderMouse, mouseEvent, true, true);
|
| -
|
| - if (pointerEventTarget) {
|
| - // This is to prevent incorrect boundary events if capturing transition was
|
| - // delayed.
|
| - *newNodeUnderMouse = pointerEventTarget->toNode();
|
| - DCHECK(*newNodeUnderMouse);
|
| - }
|
| + EventTarget* pointerEventTarget = processCaptureAndPositionOfPointerEvent(
|
| + pointerEvent, target, mouseEvent, true);
|
|
|
| EventTarget* effectiveTarget =
|
| getEffectiveTargetForPointerEvent(pointerEventTarget, pointerEvent->pointerId());
|
| @@ -466,7 +454,7 @@ WebInputEventResult PointerEventManager::sendMousePointerEvent(
|
| }
|
| result = EventHandlingUtil::mergeEventResult(result,
|
| m_mouseEventManager->dispatchMouseEvent(mouseTarget, mouseEventType,
|
| - mouseEvent, nullptr, clickCount));
|
| + mouseEvent, nullptr));
|
| }
|
|
|
| if (pointerEvent->type() == EventTypeNames::pointerup
|
| @@ -529,26 +517,24 @@ bool PointerEventManager::getPointerCaptureState(int pointerId,
|
| EventTarget* PointerEventManager::processCaptureAndPositionOfPointerEvent(
|
| PointerEvent* pointerEvent,
|
| EventTarget* hitTestTarget,
|
| - EventTarget* lastNodeUnderMouse,
|
| const PlatformMouseEvent& mouseEvent,
|
| - bool sendMouseEvent, bool setPointerPosition)
|
| + bool sendMouseEvent)
|
| {
|
| - if (setPointerPosition) {
|
| - processPendingPointerCapture(pointerEvent);
|
| + processPendingPointerCapture(pointerEvent);
|
|
|
| - if (!RuntimeEnabledFeatures::pointerEventV1SpecCapturingEnabled()) {
|
| - PointerCapturingMap::const_iterator it = m_pointerCaptureTarget.find(pointerEvent->pointerId());
|
| - if (EventTarget* pointercaptureTarget = (it != m_pointerCaptureTarget.end()) ? it->value : nullptr)
|
| - hitTestTarget = pointercaptureTarget;
|
| - }
|
| -
|
| - setNodeUnderPointer(pointerEvent, hitTestTarget);
|
| + if (!RuntimeEnabledFeatures::pointerEventV1SpecCapturingEnabled()) {
|
| + PointerCapturingMap::const_iterator it = m_pointerCaptureTarget.find(pointerEvent->pointerId());
|
| + if (EventTarget* pointercaptureTarget = (it != m_pointerCaptureTarget.end()) ? it->value : nullptr)
|
| + hitTestTarget = pointercaptureTarget;
|
| }
|
| +
|
| + setNodeUnderPointer(pointerEvent, hitTestTarget);
|
| +
|
| if (sendMouseEvent) {
|
| - // lastNodeUnderMouse is needed here because it is still stored in EventHandler.
|
| - m_mouseEventManager->sendBoundaryEvents(lastNodeUnderMouse,
|
| - hitTestTarget, mouseEvent);
|
| + m_mouseEventManager->setNodeUnderMouse(
|
| + hitTestTarget ? hitTestTarget->toNode() : nullptr, mouseEvent);
|
| }
|
| +
|
| return hitTestTarget;
|
| }
|
|
|
|
|