Index: third_party/WebKit/Source/core/input/GestureManager.cpp |
diff --git a/third_party/WebKit/Source/core/input/GestureManager.cpp b/third_party/WebKit/Source/core/input/GestureManager.cpp |
index bb56ddba8fd8f4a17637580c017a1e3880187b65..0cd148a351eb2fe948e97ff2b659055cb130d0b1 100644 |
--- a/third_party/WebKit/Source/core/input/GestureManager.cpp |
+++ b/third_party/WebKit/Source/core/input/GestureManager.cpp |
@@ -187,7 +187,7 @@ WebInputEventResult GestureManager::handleGestureTap(const GestureEventWithHitTe |
mouseDownEventResult = m_frame->eventHandler().dispatchMouseEvent(EventTypeNames::mousedown, currentHitTest.innerNode(), gestureEvent.tapCount(), fakeMouseDown); |
m_selectionController->initializeSelectionState(); |
if (mouseDownEventResult == WebInputEventResult::NotHandled) |
- mouseDownEventResult = m_frame->eventHandler().handleMouseFocus(MouseEventWithHitTestResults(fakeMouseDown, currentHitTest), InputDeviceCapabilities::firesTouchEventsSourceCapabilities()); |
+ mouseDownEventResult = m_frame->eventHandler().handleMouseFocus(currentHitTest, InputDeviceCapabilities::firesTouchEventsSourceCapabilities()); |
if (mouseDownEventResult == WebInputEventResult::NotHandled) |
mouseDownEventResult = m_frame->eventHandler().handleMousePressEvent(MouseEventWithHitTestResults(fakeMouseDown, currentHitTest)); |
} |
@@ -298,25 +298,24 @@ WebInputEventResult GestureManager::sendContextMenuEventForGesture(const Gesture |
PlatformMouseEvent::FromTouch, gestureEvent.timestamp(), WebPointerProperties::PointerType::Mouse); |
m_frame->eventHandler().dispatchMouseEvent( |
EventTypeNames::mousemove, targetedEvent.hitTestResult().innerNode(), 0, fakeMouseMove); |
+ |
+ if (m_frame->view()) { |
+ HitTestRequest request(HitTestRequest::Active); |
+ LayoutPoint documentPoint = m_frame->view()->rootFrameToContents(targetedEvent.event().position()); |
+ HitTestResult hitTestResult(request, documentPoint); |
+ m_frame->eventHandler().handleMouseFocus(hitTestResult, InputDeviceCapabilities::firesTouchEventsSourceCapabilities()); |
+ } |
} |
PlatformEvent::EventType eventType = PlatformEvent::MousePressed; |
if (m_frame->settings() && m_frame->settings()->showContextMenuOnMouseUp()) |
eventType = PlatformEvent::MouseReleased; |
- // To simulate right-click behavior, we send a right mouse down and then context menu event. |
- // TODO(crbug.com/579564): Maybe we should not send mouse down at all |
- PlatformMouseEvent mouseEvent(targetedEvent.event().position(), targetedEvent.event().globalPosition(), RightButton, eventType, 1, |
- static_cast<PlatformEvent::Modifiers>(modifiers | PlatformEvent::RightButtonDown), |
- PlatformMouseEvent::FromTouch, WTF::monotonicallyIncreasingTime(), WebPointerProperties::PointerType::Mouse); |
- if (!m_suppressMouseEventsFromGestures) { |
- // FIXME: Send HitTestResults to avoid redundant hit tests. |
- m_frame->eventHandler().handleMousePressEvent(mouseEvent); |
- } |
+ PlatformMouseEvent mouseEvent(targetedEvent.event().position(), targetedEvent.event().globalPosition(), NoButton, |
+ eventType, /* clickCount */ 0, static_cast<PlatformEvent::Modifiers>(modifiers), PlatformMouseEvent::FromTouch, |
+ WTF::monotonicallyIncreasingTime(), WebPointerProperties::PointerType::Mouse); |
return m_frame->eventHandler().sendContextMenuEvent(mouseEvent); |
- // We do not need to send a corresponding mouse release because in case of |
- // right-click, the context menu takes capture and consumes all events. |
} |
WebInputEventResult GestureManager::handleGestureShowPress() |