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

Unified Diff: third_party/WebKit/Source/core/input/PointerEventManager.cpp

Issue 2350433002: Extract more of the mouse logic from EventHandler (Closed)
Patch Set: Created 4 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
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;
}

Powered by Google App Engine
This is Rietveld 408576698