Chromium Code Reviews| Index: third_party/WebKit/Source/core/input/MouseEventManager.cpp |
| diff --git a/third_party/WebKit/Source/core/input/MouseEventManager.cpp b/third_party/WebKit/Source/core/input/MouseEventManager.cpp |
| index bb2943116f4784d1693ddff9ccce864dc8ca6d5a..aaca3de4a6922a173bbbca8e925282d38145c232 100644 |
| --- a/third_party/WebKit/Source/core/input/MouseEventManager.cpp |
| +++ b/third_party/WebKit/Source/core/input/MouseEventManager.cpp |
| @@ -35,25 +35,21 @@ namespace blink { |
| namespace { |
| -PlatformMouseEvent mouseEventWithRegion(Node* node, |
| - const PlatformMouseEvent& mouseEvent) { |
| +String canvasRegionId(Node* node, const WebMouseEvent& mouseEvent) { |
| if (!node->isElementNode()) |
| - return mouseEvent; |
| + return String(); |
| Element* element = toElement(node); |
| if (!element->isInCanvasSubtree()) |
| - return mouseEvent; |
| + return String(); |
| HTMLCanvasElement* canvas = |
| Traversal<HTMLCanvasElement>::firstAncestorOrSelf(*element); |
| // In this case, the event target is canvas and mouse rerouting doesn't |
| // happen. |
| if (canvas == element) |
| - return mouseEvent; |
| - String region = canvas->getIdFromControl(element); |
| - PlatformMouseEvent newMouseEvent = mouseEvent; |
| - newMouseEvent.setRegion(region); |
| - return newMouseEvent; |
| + return String(); |
| + return canvas->getIdFromControl(element); |
| } |
| // The amount of time to wait before sending a fake mouse event triggered |
| @@ -100,7 +96,7 @@ void MouseEventManager::clear() { |
| m_clickNode = nullptr; |
| m_mouseDownPos = IntPoint(); |
| m_mouseDownTimestamp = TimeTicks(); |
| - m_mouseDown = PlatformMouseEvent(); |
| + m_mouseDown = WebMouseEvent(); |
| m_svgPan = false; |
| m_dragStartPos = LayoutPoint(); |
| m_fakeMouseMoveEventTimer.stop(); |
| @@ -118,46 +114,45 @@ DEFINE_TRACE(MouseEventManager) { |
| } |
| MouseEventManager::MouseEventBoundaryEventDispatcher:: |
| - MouseEventBoundaryEventDispatcher( |
| - MouseEventManager* mouseEventManager, |
| - const PlatformMouseEvent* platformMouseEvent, |
| - EventTarget* exitedTarget) |
| + MouseEventBoundaryEventDispatcher(MouseEventManager* mouseEventManager, |
| + const WebMouseEvent* webMouseEvent, |
| + EventTarget* exitedTarget, |
| + const String& canvasRegionId) |
| : m_mouseEventManager(mouseEventManager), |
| - m_platformMouseEvent(platformMouseEvent), |
| - m_exitedTarget(exitedTarget) {} |
| + m_webMouseEvent(webMouseEvent), |
| + m_exitedTarget(exitedTarget), |
| + m_canvasRegionId(canvasRegionId) {} |
| void MouseEventManager::MouseEventBoundaryEventDispatcher::dispatchOut( |
| EventTarget* target, |
| EventTarget* relatedTarget) { |
| - dispatch( |
| - target, relatedTarget, EventTypeNames::mouseout, |
| - mouseEventWithRegion(m_exitedTarget->toNode(), *m_platformMouseEvent), |
| - false); |
| + dispatch(target, relatedTarget, EventTypeNames::mouseout, |
| + canvasRegionId(m_exitedTarget->toNode(), *m_webMouseEvent), |
| + *m_webMouseEvent, false); |
| } |
| void MouseEventManager::MouseEventBoundaryEventDispatcher::dispatchOver( |
| EventTarget* target, |
| EventTarget* relatedTarget) { |
| - dispatch(target, relatedTarget, EventTypeNames::mouseover, |
| - *m_platformMouseEvent, false); |
| + dispatch(target, relatedTarget, EventTypeNames::mouseover, m_canvasRegionId, |
| + *m_webMouseEvent, false); |
| } |
| void MouseEventManager::MouseEventBoundaryEventDispatcher::dispatchLeave( |
| EventTarget* target, |
| EventTarget* relatedTarget, |
| bool checkForListener) { |
| - dispatch( |
| - target, relatedTarget, EventTypeNames::mouseleave, |
| - mouseEventWithRegion(m_exitedTarget->toNode(), *m_platformMouseEvent), |
| - checkForListener); |
| + dispatch(target, relatedTarget, EventTypeNames::mouseleave, |
| + canvasRegionId(m_exitedTarget->toNode(), *m_webMouseEvent), |
| + *m_webMouseEvent, checkForListener); |
| } |
| void MouseEventManager::MouseEventBoundaryEventDispatcher::dispatchEnter( |
| EventTarget* target, |
| EventTarget* relatedTarget, |
| bool checkForListener) { |
| - dispatch(target, relatedTarget, EventTypeNames::mouseenter, |
| - *m_platformMouseEvent, checkForListener); |
| + dispatch(target, relatedTarget, EventTypeNames::mouseenter, m_canvasRegionId, |
| + *m_webMouseEvent, checkForListener); |
| } |
| AtomicString |
| @@ -174,25 +169,28 @@ void MouseEventManager::MouseEventBoundaryEventDispatcher::dispatch( |
| EventTarget* target, |
| EventTarget* relatedTarget, |
| const AtomicString& type, |
| - const PlatformMouseEvent& platformMouseEvent, |
| + const String& canvasRegionId, |
| + const WebMouseEvent& webMouseEvent, |
| bool checkForListener) { |
| - m_mouseEventManager->dispatchMouseEvent(target, type, platformMouseEvent, |
| - relatedTarget, checkForListener); |
| + m_mouseEventManager->dispatchMouseEvent(target, type, webMouseEvent, |
| + canvasRegionId, relatedTarget, |
| + checkForListener); |
| } |
| -void MouseEventManager::sendBoundaryEvents( |
| - EventTarget* exitedTarget, |
| - EventTarget* enteredTarget, |
| - const PlatformMouseEvent& mousePlatformEvent) { |
| +void MouseEventManager::sendBoundaryEvents(EventTarget* exitedTarget, |
| + EventTarget* enteredTarget, |
| + const String& canvasRegionId, |
| + const WebMouseEvent& mouseEvent) { |
| MouseEventBoundaryEventDispatcher boundaryEventDispatcher( |
| - this, &mousePlatformEvent, exitedTarget); |
| + this, &mouseEvent, exitedTarget, canvasRegionId); |
| boundaryEventDispatcher.sendBoundaryEvents(exitedTarget, enteredTarget); |
| } |
| WebInputEventResult MouseEventManager::dispatchMouseEvent( |
| EventTarget* target, |
| const AtomicString& mouseEventType, |
| - const PlatformMouseEvent& mouseEvent, |
| + const WebMouseEvent& mouseEvent, |
| + const String& canvasRegionId, |
| EventTarget* relatedTarget, |
| bool checkForListener) { |
| if (target && target->toNode() && |
| @@ -206,9 +204,10 @@ WebInputEventResult MouseEventManager::dispatchMouseEvent( |
| mouseEventType == EventTypeNames::dblclick) { |
| clickCount = m_clickCount; |
| } |
| - MouseEvent* event = MouseEvent::create( |
| - mouseEventType, targetNode->document().domWindow(), mouseEvent, |
| - clickCount, relatedTarget ? relatedTarget->toNode() : nullptr); |
| + MouseEvent* event = |
| + MouseEvent::create(mouseEventType, targetNode->document().domWindow(), |
| + mouseEvent, clickCount, canvasRegionId, |
| + relatedTarget ? relatedTarget->toNode() : nullptr); |
| DispatchEventResult dispatchResult = target->dispatchEvent(event); |
| return EventHandlingUtil::toWebInputEventResult(dispatchResult); |
| } |
| @@ -217,32 +216,32 @@ WebInputEventResult MouseEventManager::dispatchMouseEvent( |
| WebInputEventResult MouseEventManager::setMousePositionAndDispatchMouseEvent( |
| Node* targetNode, |
| + const String& canvasRegionId, |
| const AtomicString& eventType, |
| - const PlatformMouseEvent& platformMouseEvent) { |
| + const WebMouseEvent& webMouseEvent) { |
| // If the target node is a text node, dispatch on the parent node. |
| if (targetNode && targetNode->isTextNode()) |
| targetNode = FlatTreeTraversal::parent(*targetNode); |
| - setNodeUnderMouse(targetNode, platformMouseEvent); |
| + setNodeUnderMouse(targetNode, canvasRegionId, webMouseEvent); |
| - return dispatchMouseEvent(m_nodeUnderMouse, eventType, platformMouseEvent, |
| - nullptr); |
| + return dispatchMouseEvent(m_nodeUnderMouse, eventType, webMouseEvent, |
| + canvasRegionId, nullptr); |
| } |
| WebInputEventResult MouseEventManager::dispatchMouseClickIfNeeded( |
| const MouseEventWithHitTestResults& mev) { |
| // We only prevent click event when the click may cause contextmenu to popup. |
| // However, we always send auxclick. |
| - bool contextMenuEvent = !RuntimeEnabledFeatures::auxclickEnabled() && |
| - mev.event().pointerProperties().button == |
| - WebPointerProperties::Button::Right; |
| + bool contextMenuEvent = |
| + !RuntimeEnabledFeatures::auxclickEnabled() && |
| + mev.event().button == WebPointerProperties::Button::Right; |
| #if OS(MACOSX) |
| // FIXME: The Mac port achieves the same behavior by checking whether the |
| // context menu is currently open in WebPage::mouseEvent(). Consider merging |
| // the implementations. |
| - if (mev.event().pointerProperties().button == |
| - WebPointerProperties::Button::Left && |
| - mev.event().getModifiers() & PlatformEvent::CtrlKey) |
| + if (mev.event().button == WebPointerProperties::Button::Left && |
| + mev.event().modifiers() & WebInputEvent::Modifiers::ControlKey) |
| contextMenuEvent = true; |
| #endif |
| @@ -269,12 +268,12 @@ WebInputEventResult MouseEventManager::dispatchMouseClickIfNeeded( |
| } |
| if (clickTargetNode) { |
| clickEventResult = dispatchMouseEvent( |
| - clickTargetNode, !RuntimeEnabledFeatures::auxclickEnabled() || |
| - (mev.event().pointerProperties().button == |
| - WebPointerProperties::Button::Left) |
| - ? EventTypeNames::click |
| - : EventTypeNames::auxclick, |
| - mev.event(), nullptr); |
| + clickTargetNode, |
| + !RuntimeEnabledFeatures::auxclickEnabled() || |
| + (mev.event().button == WebPointerProperties::Button::Left) |
| + ? EventTypeNames::click |
| + : EventTypeNames::auxclick, |
| + mev.event(), mev.canvasRegionId(), nullptr); |
| } |
| } |
| return clickEventResult; |
| @@ -300,14 +299,17 @@ void MouseEventManager::fakeMouseMoveEventTimerFired(TimerBase* timer) { |
| if (!m_frame->page()->isCursorVisible()) |
| return; |
| - PlatformMouseEvent fakeMouseMoveEvent( |
| - m_lastKnownMousePosition, m_lastKnownMouseGlobalPosition, |
| - WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, |
| - static_cast<PlatformEvent::Modifiers>( |
| - KeyboardEventManager::getCurrentModifierState()), |
| - PlatformMouseEvent::RealOrIndistinguishable, TimeTicks::Now(), |
| - WebPointerProperties::PointerType::Mouse); |
| - Vector<PlatformMouseEvent> coalescedEvents; |
| + WebMouseEvent fakeMouseMoveEvent( |
| + WebInputEvent::MouseMove, |
| + WebFloatPoint(m_lastKnownMousePosition.x(), m_lastKnownMousePosition.y()), |
| + WebFloatPoint(m_lastKnownMouseGlobalPosition.x(), |
| + m_lastKnownMouseGlobalPosition.y()), |
| + WebPointerProperties::Button::NoButton, 0, |
| + KeyboardEventManager::getCurrentModifierState(), |
| + TimeTicks::Now().InSeconds()); |
| + // TODO(dtapuska): Update m_lastKnowMousePosition to be viewport coordinates. |
|
bokan
2017/01/27 16:57:17
Ditto here
dtapuska
2017/01/27 21:00:00
same reasoning.
|
| + fakeMouseMoveEvent.setFrameScale(1); |
| + Vector<WebMouseEvent> coalescedEvents; |
| m_frame->eventHandler().handleMouseMoveEvent(fakeMouseMoveEvent, |
| coalescedEvents); |
| } |
| @@ -316,9 +318,9 @@ void MouseEventManager::cancelFakeMouseMoveEvent() { |
| m_fakeMouseMoveEventTimer.stop(); |
| } |
| -void MouseEventManager::setNodeUnderMouse( |
| - Node* target, |
| - const PlatformMouseEvent& platformMouseEvent) { |
| +void MouseEventManager::setNodeUnderMouse(Node* target, |
| + const String& canvasRegionId, |
| + const WebMouseEvent& webMouseEvent) { |
| Node* lastNodeUnderMouse = m_nodeUnderMouse; |
| m_nodeUnderMouse = target; |
| @@ -367,7 +369,8 @@ void MouseEventManager::setNodeUnderMouse( |
| lastNodeUnderMouse = nullptr; |
| } |
| - sendBoundaryEvents(lastNodeUnderMouse, m_nodeUnderMouse, platformMouseEvent); |
| + sendBoundaryEvents(lastNodeUnderMouse, m_nodeUnderMouse, canvasRegionId, |
| + webMouseEvent); |
| } |
| void MouseEventManager::nodeChildrenWillBeRemoved(ContainerNode& container) { |
| @@ -493,17 +496,18 @@ bool MouseEventManager::slideFocusOnShadowHostIfNecessary( |
| } |
| void MouseEventManager::handleMousePressEventUpdateStates( |
| - const PlatformMouseEvent& mouseEvent) { |
| + const WebMouseEvent& mouseEvent) { |
| cancelFakeMouseMoveEvent(); |
| m_mousePressed = true; |
| m_capturesDragging = true; |
| setLastKnownMousePosition(mouseEvent); |
| m_mouseDownMayStartDrag = false; |
| m_mouseDownMayStartAutoscroll = false; |
| - m_mouseDownTimestamp = mouseEvent.timestamp(); |
| + m_mouseDownTimestamp = TimeTicks::FromSeconds(mouseEvent.timeStampSeconds()); |
| if (FrameView* view = m_frame->view()) { |
| - m_mouseDownPos = view->rootFrameToContents(mouseEvent.position()); |
| + m_mouseDownPos = view->rootFrameToContents( |
| + flooredIntPoint(mouseEvent.positionInRootFrame())); |
| } else { |
| invalidateClick(); |
| } |
| @@ -517,11 +521,10 @@ IntPoint MouseEventManager::lastKnownMousePosition() { |
| return m_lastKnownMousePosition; |
| } |
| -void MouseEventManager::setLastKnownMousePosition( |
| - const PlatformMouseEvent& event) { |
| +void MouseEventManager::setLastKnownMousePosition(const WebMouseEvent& event) { |
| m_isMousePositionUnknown = false; |
| - m_lastKnownMousePosition = event.position(); |
| - m_lastKnownMouseGlobalPosition = event.globalPosition(); |
| + m_lastKnownMousePosition = flooredIntPoint(event.positionInRootFrame()); |
| + m_lastKnownMouseGlobalPosition = IntPoint(event.globalX, event.globalY); |
| } |
| void MouseEventManager::dispatchFakeMouseMoveEventSoon() { |
| @@ -561,11 +564,12 @@ WebInputEventResult MouseEventManager::handleMousePressEvent( |
| m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
| if (FrameView* frameView = m_frame->view()) { |
| - if (frameView->isPointInScrollbarCorner(event.event().position())) |
| + if (frameView->isPointInScrollbarCorner( |
| + flooredIntPoint(event.event().positionInRootFrame()))) |
| return WebInputEventResult::NotHandled; |
| } |
| - bool singleClick = event.event().clickCount() <= 1; |
| + bool singleClick = event.event().clickCount <= 1; |
| m_mouseDownMayStartDrag = |
| singleClick && !isLinkSelection(event) && !isExtendingSelection(event); |
| @@ -576,10 +580,12 @@ WebInputEventResult MouseEventManager::handleMousePressEvent( |
| if (m_frame->document()->isSVGDocument() && |
| m_frame->document()->accessSVGExtensions().zoomAndPanEnabled()) { |
| - if (event.event().shiftKey() && singleClick) { |
| + if ((event.event().modifiers() & WebInputEvent::Modifiers::ShiftKey) && |
| + singleClick) { |
| m_svgPan = true; |
| m_frame->document()->accessSVGExtensions().startPan( |
| - m_frame->view()->rootFrameToContents(event.event().position())); |
| + m_frame->view()->rootFrameToContents( |
| + flooredIntPoint(event.event().positionInRootFrame()))); |
| return WebInputEventResult::HandledSystem; |
| } |
| } |
| @@ -593,16 +599,16 @@ WebInputEventResult MouseEventManager::handleMousePressEvent( |
| m_mousePressNode = innerNode; |
| m_frame->document()->setSequentialFocusNavigationStartingPoint(innerNode); |
| - m_dragStartPos = event.event().position(); |
| + m_dragStartPos = flooredIntPoint(event.event().positionInRootFrame()); |
| bool swallowEvent = false; |
| m_mousePressed = true; |
| - if (event.event().clickCount() == 2) { |
| + if (event.event().clickCount == 2) { |
| swallowEvent = m_frame->eventHandler() |
| .selectionController() |
| .handleMousePressEventDoubleClick(event); |
| - } else if (event.event().clickCount() >= 3) { |
| + } else if (event.event().clickCount >= 3) { |
| swallowEvent = m_frame->eventHandler() |
| .selectionController() |
| .handleMousePressEventTripleClick(event); |
| @@ -647,30 +653,28 @@ bool MouseEventManager::handleDragDropIfPossible( |
| // TODO(mustaq): Suppressing long-tap MouseEvents could break |
| // drag-drop. Will do separately because of the risk. crbug.com/606938. |
| - PlatformMouseEvent mouseDownEvent( |
| - gestureEvent, WebPointerProperties::Button::Left, |
| - PlatformEvent::MousePressed, 1, |
| - static_cast<PlatformEvent::Modifiers>(modifiers | |
| - PlatformEvent::LeftButtonDown), |
| - PlatformMouseEvent::FromTouch, TimeTicks::Now(), |
| - WebPointerProperties::PointerType::Mouse); |
| + WebMouseEvent mouseDownEvent( |
| + WebInputEvent::MouseDown, gestureEvent, |
| + WebPointerProperties::Button::Left, 1, |
| + modifiers | WebInputEvent::Modifiers::LeftButtonDown | |
| + WebInputEvent::Modifiers::IsCompatibilityEventForTouch, |
| + TimeTicks::Now().InSeconds()); |
| m_mouseDown = mouseDownEvent; |
| - PlatformMouseEvent mouseDragEvent( |
| - gestureEvent, WebPointerProperties::Button::Left, |
| - PlatformEvent::MouseMoved, 1, |
| - static_cast<PlatformEvent::Modifiers>(modifiers | |
| - PlatformEvent::LeftButtonDown), |
| - PlatformMouseEvent::FromTouch, TimeTicks::Now(), |
| - WebPointerProperties::PointerType::Mouse); |
| + WebMouseEvent mouseDragEvent( |
| + WebInputEvent::MouseMove, gestureEvent, |
| + WebPointerProperties::Button::Left, 1, |
| + modifiers | WebInputEvent::Modifiers::LeftButtonDown | |
| + WebInputEvent::Modifiers::IsCompatibilityEventForTouch, |
| + TimeTicks::Now().InSeconds()); |
| HitTestRequest request(HitTestRequest::ReadOnly); |
| MouseEventWithHitTestResults mev = |
| EventHandlingUtil::performMouseEventHitTest(m_frame, request, |
| mouseDragEvent); |
| m_mouseDownMayStartDrag = true; |
| dragState().m_dragSrc = nullptr; |
| - m_mouseDownPos = |
| - m_frame->view()->rootFrameToContents(mouseDragEvent.position()); |
| + m_mouseDownPos = m_frame->view()->rootFrameToContents( |
| + flooredIntPoint(mouseDragEvent.positionInRootFrame())); |
| return handleDrag(mev, DragInitiator::Touch); |
| } |
| return false; |
| @@ -701,8 +705,7 @@ WebInputEventResult MouseEventManager::handleMouseDraggedEvent( |
| // that ends as a result of a mouse release does not send a mouse release |
| // event. As a result, m_mousePressed also ends up remaining true until |
| // the next mouse release event seen by the EventHandler. |
| - if (event.event().pointerProperties().button != |
| - WebPointerProperties::Button::Left) |
| + if (event.event().button != WebPointerProperties::Button::Left) |
| m_mousePressed = false; |
| if (!m_mousePressed) |
| @@ -751,7 +754,7 @@ WebInputEventResult MouseEventManager::handleMouseDraggedEvent( |
| bool MouseEventManager::handleDrag(const MouseEventWithHitTestResults& event, |
| DragInitiator initiator) { |
| - DCHECK(event.event().type() == PlatformEvent::MouseMoved); |
| + DCHECK(event.event().type() == WebInputEvent::MouseMove); |
| // Callers must protect the reference to FrameView, since this function may |
| // dispatch DOM events, causing page/FrameView to go away. |
| DCHECK(m_frame); |
| @@ -766,7 +769,9 @@ bool MouseEventManager::handleDrag(const MouseEventWithHitTestResults& event, |
| Node* node = result.innerNode(); |
| if (node) { |
| DragController::SelectionDragPolicy selectionDragPolicy = |
| - event.event().timestamp() - m_mouseDownTimestamp < kTextDragDelay |
| + TimeTicks::FromSeconds(event.event().timeStampSeconds()) - |
| + m_mouseDownTimestamp < |
| + kTextDragDelay |
| ? DragController::DelayedSelectionDragResolution |
| : DragController::ImmediateSelectionDragResolution; |
| dragState().m_dragSrc = m_frame->page()->dragController().draggableNode( |
| @@ -794,7 +799,8 @@ bool MouseEventManager::handleDrag(const MouseEventWithHitTestResults& event, |
| m_frame->view()->setCursor(pointerCursor()); |
| if (initiator == DragInitiator::Mouse && |
| - !dragThresholdExceeded(event.event().position())) { |
| + !dragThresholdExceeded( |
| + flooredIntPoint(event.event().positionInRootFrame()))) { |
| dragState().m_dragSrc = nullptr; |
| return true; |
| } |
| @@ -867,7 +873,7 @@ bool MouseEventManager::tryStartDrag( |
| // eventhandler canceled. |
| WebInputEventResult MouseEventManager::dispatchDragSrcEvent( |
| const AtomicString& eventType, |
| - const PlatformMouseEvent& event) { |
| + const WebMouseEvent& event) { |
| return dispatchDragEvent(eventType, dragState().m_dragSrc.get(), event, |
| dragState().m_dragDataTransfer.get()); |
| } |
| @@ -875,7 +881,7 @@ WebInputEventResult MouseEventManager::dispatchDragSrcEvent( |
| WebInputEventResult MouseEventManager::dispatchDragEvent( |
| const AtomicString& eventType, |
| Node* dragTarget, |
| - const PlatformMouseEvent& event, |
| + const WebMouseEvent& event, |
| DataTransfer* dataTransfer) { |
| FrameView* view = m_frame->view(); |
| @@ -886,13 +892,16 @@ WebInputEventResult MouseEventManager::dispatchDragEvent( |
| const bool cancelable = eventType != EventTypeNames::dragleave && |
| eventType != EventTypeNames::dragend; |
| + IntPoint position = flooredIntPoint(event.positionInRootFrame()); |
| + IntPoint movement = flooredIntPoint(event.movementInRootFrame()); |
| DragEvent* me = DragEvent::create( |
| eventType, true, cancelable, m_frame->document()->domWindow(), 0, |
| - event.globalPosition().x(), event.globalPosition().y(), |
| - event.position().x(), event.position().y(), event.movementDelta().x(), |
| - event.movementDelta().y(), event.getModifiers(), 0, |
| - MouseEvent::platformModifiersToButtons(event.getModifiers()), nullptr, |
| - event.timestamp(), dataTransfer, event.getSyntheticEventType()); |
| + event.globalX, event.globalY, position.x(), position.y(), movement.x(), |
| + movement.y(), static_cast<PlatformEvent::Modifiers>(event.modifiers()), 0, |
| + MouseEvent::platformModifiersToButtons(event.modifiers()), nullptr, |
| + TimeTicks::FromSeconds(event.timeStampSeconds()), dataTransfer, |
| + event.fromTouch() ? MouseEvent::FromTouch |
| + : MouseEvent::RealOrIndistinguishable); |
| return EventHandlingUtil::toWebInputEventResult( |
| dragTarget->dispatchEvent(me)); |
| @@ -905,7 +914,7 @@ void MouseEventManager::clearDragDataTransfer() { |
| } |
| } |
| -void MouseEventManager::dragSourceEndedAt(const PlatformMouseEvent& event, |
| +void MouseEventManager::dragSourceEndedAt(const WebMouseEvent& event, |
| DragOperation operation) { |
| if (dragState().m_dragSrc) { |
| dragState().m_dragDataTransfer->setDestinationOperation(operation); |