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

Side by Side Diff: third_party/WebKit/Source/core/input/EventHandler.cpp

Issue 2650403006: Remove PlatformMouseEvent and use WebMouseEvent instead (Closed)
Patch Set: Fix nits Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights
3 * reserved. 3 * reserved.
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 } 561 }
562 562
563 if ((editable || 563 if ((editable ||
564 (layoutObject && layoutObject->isText() && node->canStartSelection())) && 564 (layoutObject && layoutObject->isText() && node->canStartSelection())) &&
565 !inResizer && !result.scrollbar()) 565 !inResizer && !result.scrollbar())
566 return iBeam; 566 return iBeam;
567 return pointerCursor(); 567 return pointerCursor();
568 } 568 }
569 569
570 WebInputEventResult EventHandler::handleMousePressEvent( 570 WebInputEventResult EventHandler::handleMousePressEvent(
571 const PlatformMouseEvent& mouseEvent) { 571 const WebMouseEvent& mouseEvent) {
572 TRACE_EVENT0("blink", "EventHandler::handleMousePressEvent"); 572 TRACE_EVENT0("blink", "EventHandler::handleMousePressEvent");
573 573
574 // For 4th/5th button in the mouse since Chrome does not yet send 574 // For 4th/5th button in the mouse since Chrome does not yet send
575 // button value to Blink but in some cases it does send the event. 575 // button value to Blink but in some cases it does send the event.
576 // This check is needed to suppress such an event (crbug.com/574959) 576 // This check is needed to suppress such an event (crbug.com/574959)
577 if (mouseEvent.pointerProperties().button == 577 if (mouseEvent.button == WebPointerProperties::Button::NoButton)
578 WebPointerProperties::Button::NoButton)
579 return WebInputEventResult::HandledSuppressed; 578 return WebInputEventResult::HandledSuppressed;
580 579
581 if (m_eventHandlerWillResetCapturingMouseEventsNode) 580 if (m_eventHandlerWillResetCapturingMouseEventsNode)
582 m_capturingMouseEventsNode = nullptr; 581 m_capturingMouseEventsNode = nullptr;
583 m_mouseEventManager->handleMousePressEventUpdateStates(mouseEvent); 582 m_mouseEventManager->handleMousePressEventUpdateStates(mouseEvent);
584 selectionController().setMouseDownMayStartSelect(false); 583 selectionController().setMouseDownMayStartSelect(false);
585 if (!m_frame->view()) 584 if (!m_frame->view())
586 return WebInputEventResult::NotHandled; 585 return WebInputEventResult::NotHandled;
587 586
588 HitTestRequest request(HitTestRequest::Active); 587 HitTestRequest request(HitTestRequest::Active);
589 // Save the document point we generate in case the window coordinate is 588 // Save the document point we generate in case the window coordinate is
590 // invalidated by what happens when we dispatch the event. 589 // invalidated by what happens when we dispatch the event.
591 LayoutPoint documentPoint = 590 LayoutPoint documentPoint = m_frame->view()->rootFrameToContents(
592 m_frame->view()->rootFrameToContents(mouseEvent.position()); 591 flooredIntPoint(mouseEvent.positionInRootFrame()));
593 MouseEventWithHitTestResults mev = 592 MouseEventWithHitTestResults mev =
594 m_frame->document()->performMouseEventHitTest(request, documentPoint, 593 m_frame->document()->performMouseEventHitTest(request, documentPoint,
595 mouseEvent); 594 mouseEvent);
596 595
597 if (!mev.innerNode()) { 596 if (!mev.innerNode()) {
598 m_mouseEventManager->invalidateClick(); 597 m_mouseEventManager->invalidateClick();
599 return WebInputEventResult::NotHandled; 598 return WebInputEventResult::NotHandled;
600 } 599 }
601 600
602 m_mouseEventManager->setMousePressNode(mev.innerNode()); 601 m_mouseEventManager->setMousePressNode(mev.innerNode());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 m_scrollManager->stopAutoscroll(); 634 m_scrollManager->stopAutoscroll();
636 if (isMiddleClickAutoscrollInProgress) { 635 if (isMiddleClickAutoscrollInProgress) {
637 // We invalidate the click when exiting middle click auto scroll so that 636 // We invalidate the click when exiting middle click auto scroll so that
638 // we don't inadvertently navigate away from the current page (e.g. the 637 // we don't inadvertently navigate away from the current page (e.g. the
639 // click was on a hyperlink). See <rdar://problem/6095023>. 638 // click was on a hyperlink). See <rdar://problem/6095023>.
640 m_mouseEventManager->invalidateClick(); 639 m_mouseEventManager->invalidateClick();
641 return WebInputEventResult::HandledSuppressed; 640 return WebInputEventResult::HandledSuppressed;
642 } 641 }
643 } 642 }
644 643
645 m_mouseEventManager->setClickCount(mouseEvent.clickCount()); 644 m_mouseEventManager->setClickCount(mouseEvent.clickCount);
646 m_mouseEventManager->setClickNode( 645 m_mouseEventManager->setClickNode(
647 mev.innerNode()->isTextNode() 646 mev.innerNode()->isTextNode()
648 ? FlatTreeTraversal::parent(*mev.innerNode()) 647 ? FlatTreeTraversal::parent(*mev.innerNode())
649 : mev.innerNode()); 648 : mev.innerNode());
650 649
651 if (!mouseEvent.fromTouch()) 650 if (!mouseEvent.fromTouch())
652 m_frame->selection().setCaretBlinkingSuspended(true); 651 m_frame->selection().setCaretBlinkingSuspended(true);
653 652
654 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents( 653 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents(
655 EventTypeNames::mousedown, mev.innerNode(), mev.event(), 654 EventTypeNames::mousedown, mev.innerNode(), mev.canvasRegionId(),
656 Vector<PlatformMouseEvent>()); 655 mev.event(), Vector<WebMouseEvent>());
657 656
658 if (eventResult == WebInputEventResult::NotHandled && m_frame->view()) { 657 if (eventResult == WebInputEventResult::NotHandled && m_frame->view()) {
659 FrameView* view = m_frame->view(); 658 FrameView* view = m_frame->view();
660 PaintLayer* layer = mev.innerNode()->layoutObject() 659 PaintLayer* layer = mev.innerNode()->layoutObject()
661 ? mev.innerNode()->layoutObject()->enclosingLayer() 660 ? mev.innerNode()->layoutObject()->enclosingLayer()
662 : nullptr; 661 : nullptr;
663 IntPoint p = view->rootFrameToContents(mouseEvent.position()); 662 IntPoint p = view->rootFrameToContents(
663 flooredIntPoint(mouseEvent.positionInRootFrame()));
664 if (layer && layer->getScrollableArea() && 664 if (layer && layer->getScrollableArea() &&
665 layer->getScrollableArea()->isPointInResizeControl(p, 665 layer->getScrollableArea()->isPointInResizeControl(p,
666 ResizerForPointer)) { 666 ResizerForPointer)) {
667 m_scrollManager->setResizeScrollableArea(layer, p); 667 m_scrollManager->setResizeScrollableArea(layer, p);
668 return WebInputEventResult::HandledSystem; 668 return WebInputEventResult::HandledSystem;
669 } 669 }
670 } 670 }
671 671
672 // m_selectionInitiationState is initialized after dispatching mousedown 672 // m_selectionInitiationState is initialized after dispatching mousedown
673 // event in order not to keep the selection by DOM APIs because we can't 673 // event in order not to keep the selection by DOM APIs because we can't
674 // give the user the chance to handle the selection by user action like 674 // give the user the chance to handle the selection by user action like
675 // dragging if we keep the selection in case of mousedown. FireFox also has 675 // dragging if we keep the selection in case of mousedown. FireFox also has
676 // the same behavior and it's more compatible with other browsers. 676 // the same behavior and it's more compatible with other browsers.
677 selectionController().initializeSelectionState(); 677 selectionController().initializeSelectionState();
678 HitTestResult hitTestResult = EventHandlingUtil::hitTestResultInFrame( 678 HitTestResult hitTestResult = EventHandlingUtil::hitTestResultInFrame(
679 m_frame, documentPoint, HitTestRequest::ReadOnly); 679 m_frame, documentPoint, HitTestRequest::ReadOnly);
680 InputDeviceCapabilities* sourceCapabilities = 680 InputDeviceCapabilities* sourceCapabilities =
681 mouseEvent.getSyntheticEventType() == PlatformMouseEvent::FromTouch 681 mouseEvent.fromTouch()
682 ? InputDeviceCapabilities::firesTouchEventsSourceCapabilities() 682 ? InputDeviceCapabilities::firesTouchEventsSourceCapabilities()
683 : InputDeviceCapabilities::doesntFireTouchEventsSourceCapabilities(); 683 : InputDeviceCapabilities::doesntFireTouchEventsSourceCapabilities();
684 if (eventResult == WebInputEventResult::NotHandled) { 684 if (eventResult == WebInputEventResult::NotHandled) {
685 eventResult = m_mouseEventManager->handleMouseFocus(hitTestResult, 685 eventResult = m_mouseEventManager->handleMouseFocus(hitTestResult,
686 sourceCapabilities); 686 sourceCapabilities);
687 } 687 }
688 m_mouseEventManager->setCapturesDragging( 688 m_mouseEventManager->setCapturesDragging(
689 eventResult == WebInputEventResult::NotHandled || mev.scrollbar()); 689 eventResult == WebInputEventResult::NotHandled || mev.scrollbar());
690 690
691 // If the hit testing originally determined the event was in a scrollbar, 691 // If the hit testing originally determined the event was in a scrollbar,
(...skipping 20 matching lines...) Expand all
712 request, documentPoint, mouseEvent); 712 request, documentPoint, mouseEvent);
713 } 713 }
714 714
715 if (passMousePressEventToScrollbar(mev)) 715 if (passMousePressEventToScrollbar(mev))
716 eventResult = WebInputEventResult::HandledSystem; 716 eventResult = WebInputEventResult::HandledSystem;
717 else 717 else
718 eventResult = m_mouseEventManager->handleMousePressEvent(mev); 718 eventResult = m_mouseEventManager->handleMousePressEvent(mev);
719 } 719 }
720 720
721 if (mev.hitTestResult().innerNode() && 721 if (mev.hitTestResult().innerNode() &&
722 mouseEvent.pointerProperties().button == 722 mouseEvent.button == WebPointerProperties::Button::Left) {
723 WebPointerProperties::Button::Left) { 723 DCHECK_EQ(WebInputEvent::MouseDown, mouseEvent.type());
724 ASSERT(mouseEvent.type() == PlatformEvent::MousePressed);
725 HitTestResult result = mev.hitTestResult(); 724 HitTestResult result = mev.hitTestResult();
726 result.setToShadowHostIfInUserAgentShadowRoot(); 725 result.setToShadowHostIfInUserAgentShadowRoot();
727 m_frame->chromeClient().onMouseDown(result.innerNode()); 726 m_frame->chromeClient().onMouseDown(result.innerNode());
728 } 727 }
729 728
730 return eventResult; 729 return eventResult;
731 } 730 }
732 731
733 WebInputEventResult EventHandler::handleMouseMoveEvent( 732 WebInputEventResult EventHandler::handleMouseMoveEvent(
734 const PlatformMouseEvent& event, 733 const WebMouseEvent& event,
735 const Vector<PlatformMouseEvent>& coalescedEvents) { 734 const Vector<WebMouseEvent>& coalescedEvents) {
736 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); 735 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent");
737 736
738 HitTestResult hoveredNode = HitTestResult(); 737 HitTestResult hoveredNode = HitTestResult();
739 WebInputEventResult result = 738 WebInputEventResult result =
740 handleMouseMoveOrLeaveEvent(event, coalescedEvents, &hoveredNode); 739 handleMouseMoveOrLeaveEvent(event, coalescedEvents, &hoveredNode);
741 740
742 Page* page = m_frame->page(); 741 Page* page = m_frame->page();
743 if (!page) 742 if (!page)
744 return result; 743 return result;
745 744
746 if (PaintLayer* layer = 745 if (PaintLayer* layer =
747 EventHandlingUtil::layerForNode(hoveredNode.innerNode())) { 746 EventHandlingUtil::layerForNode(hoveredNode.innerNode())) {
748 if (ScrollableArea* layerScrollableArea = 747 if (ScrollableArea* layerScrollableArea =
749 EventHandlingUtil::associatedScrollableArea(layer)) 748 EventHandlingUtil::associatedScrollableArea(layer))
750 layerScrollableArea->mouseMovedInContentArea(); 749 layerScrollableArea->mouseMovedInContentArea();
751 } 750 }
752 751
753 if (FrameView* frameView = m_frame->view()) 752 if (FrameView* frameView = m_frame->view())
754 frameView->mouseMovedInContentArea(); 753 frameView->mouseMovedInContentArea();
755 754
756 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); 755 hoveredNode.setToShadowHostIfInUserAgentShadowRoot();
757 page->chromeClient().mouseDidMoveOverElement(*m_frame, hoveredNode); 756 page->chromeClient().mouseDidMoveOverElement(*m_frame, hoveredNode);
758 757
759 return result; 758 return result;
760 } 759 }
761 760
762 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) { 761 void EventHandler::handleMouseLeaveEvent(const WebMouseEvent& event) {
763 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); 762 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent");
764 763
765 handleMouseMoveOrLeaveEvent(event, Vector<PlatformMouseEvent>(), 0, false, 764 handleMouseMoveOrLeaveEvent(event, Vector<WebMouseEvent>(), 0, false, true);
766 true);
767 } 765 }
768 766
769 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent( 767 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent(
770 const PlatformMouseEvent& mouseEvent, 768 const WebMouseEvent& mouseEvent,
771 const Vector<PlatformMouseEvent>& coalescedEvents, 769 const Vector<WebMouseEvent>& coalescedEvents,
772 HitTestResult* hoveredNode, 770 HitTestResult* hoveredNode,
773 bool onlyUpdateScrollbars, 771 bool onlyUpdateScrollbars,
774 bool forceLeave) { 772 bool forceLeave) {
775 ASSERT(m_frame); 773 ASSERT(m_frame);
776 ASSERT(m_frame->view()); 774 ASSERT(m_frame->view());
777 775
778 m_mouseEventManager->setLastKnownMousePosition(mouseEvent); 776 m_mouseEventManager->setLastKnownMousePosition(mouseEvent);
779 777
780 m_hoverTimer.stop(); 778 m_hoverTimer.stop();
781 m_cursorUpdateTimer.stop(); 779 m_cursorUpdateTimer.stop();
782 780
783 m_mouseEventManager->cancelFakeMouseMoveEvent(); 781 m_mouseEventManager->cancelFakeMouseMoveEvent();
784 m_mouseEventManager->handleSvgPanIfNeeded(false); 782 m_mouseEventManager->handleSvgPanIfNeeded(false);
785 783
786 if (m_frameSetBeingResized) { 784 if (m_frameSetBeingResized) {
787 return updatePointerTargetAndDispatchEvents(EventTypeNames::mousemove, 785 return updatePointerTargetAndDispatchEvents(
788 m_frameSetBeingResized.get(), 786 EventTypeNames::mousemove, m_frameSetBeingResized.get(), String(),
789 mouseEvent, coalescedEvents); 787 mouseEvent, coalescedEvents);
790 } 788 }
791 789
792 // Send events right to a scrollbar if the mouse is pressed. 790 // Send events right to a scrollbar if the mouse is pressed.
793 if (m_lastScrollbarUnderMouse && m_mouseEventManager->mousePressed()) { 791 if (m_lastScrollbarUnderMouse && m_mouseEventManager->mousePressed()) {
794 m_lastScrollbarUnderMouse->mouseMoved(mouseEvent); 792 m_lastScrollbarUnderMouse->mouseMoved(mouseEvent);
795 return WebInputEventResult::HandledSystem; 793 return WebInputEventResult::HandledSystem;
796 } 794 }
797 795
798 // Mouse events simulated from touch should not hit-test again. 796 // Mouse events simulated from touch should not hit-test again.
799 ASSERT(!mouseEvent.fromTouch()); 797 ASSERT(!mouseEvent.fromTouch());
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 // event to the last subframe so that it will fire mouseouts. 853 // event to the last subframe so that it will fire mouseouts.
856 if (m_lastMouseMoveEventSubframe && 854 if (m_lastMouseMoveEventSubframe &&
857 m_lastMouseMoveEventSubframe->tree().isDescendantOf(m_frame) && 855 m_lastMouseMoveEventSubframe->tree().isDescendantOf(m_frame) &&
858 m_lastMouseMoveEventSubframe != newSubframe) 856 m_lastMouseMoveEventSubframe != newSubframe)
859 m_lastMouseMoveEventSubframe->eventHandler().handleMouseLeaveEvent( 857 m_lastMouseMoveEventSubframe->eventHandler().handleMouseLeaveEvent(
860 mev.event()); 858 mev.event());
861 859
862 if (newSubframe) { 860 if (newSubframe) {
863 // Update over/out state before passing the event to the subframe. 861 // Update over/out state before passing the event to the subframe.
864 m_pointerEventManager->sendMouseAndPointerBoundaryEvents( 862 m_pointerEventManager->sendMouseAndPointerBoundaryEvents(
865 updateMouseEventTargetNode(mev.innerNode()), mev.event()); 863 updateMouseEventTargetNode(mev.innerNode()), mev.canvasRegionId(),
864 mev.event());
866 865
867 // Event dispatch in sendMouseAndPointerBoundaryEvents may have caused the 866 // Event dispatch in sendMouseAndPointerBoundaryEvents may have caused the
868 // subframe of the target node to be detached from its FrameView, in which 867 // subframe of the target node to be detached from its FrameView, in which
869 // case the event should not be passed. 868 // case the event should not be passed.
870 if (newSubframe->view()) { 869 if (newSubframe->view()) {
871 eventResult = passMouseMoveEventToSubframe(mev, coalescedEvents, 870 eventResult = passMouseMoveEventToSubframe(mev, coalescedEvents,
872 newSubframe, hoveredNode); 871 newSubframe, hoveredNode);
873 } 872 }
874 } else { 873 } else {
875 if (scrollbar && !m_mouseEventManager->mousePressed()) { 874 if (scrollbar && !m_mouseEventManager->mousePressed()) {
876 // Handle hover effects on platforms that support visual feedback on 875 // Handle hover effects on platforms that support visual feedback on
877 // scrollbar hovering. 876 // scrollbar hovering.
878 scrollbar->mouseMoved(mev.event()); 877 scrollbar->mouseMoved(mev.event());
879 } 878 }
880 if (FrameView* view = m_frame->view()) { 879 if (FrameView* view = m_frame->view()) {
881 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); 880 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult());
882 if (optionalCursor.isCursorChange()) { 881 if (optionalCursor.isCursorChange()) {
883 view->setCursor(optionalCursor.cursor()); 882 view->setCursor(optionalCursor.cursor());
884 } 883 }
885 } 884 }
886 } 885 }
887 886
888 m_lastMouseMoveEventSubframe = newSubframe; 887 m_lastMouseMoveEventSubframe = newSubframe;
889 888
890 if (eventResult != WebInputEventResult::NotHandled) 889 if (eventResult != WebInputEventResult::NotHandled)
891 return eventResult; 890 return eventResult;
892 891
893 eventResult = updatePointerTargetAndDispatchEvents( 892 eventResult = updatePointerTargetAndDispatchEvents(
894 EventTypeNames::mousemove, mev.innerNode(), mev.event(), coalescedEvents); 893 EventTypeNames::mousemove, mev.innerNode(), mev.canvasRegionId(),
894 mev.event(), coalescedEvents);
895 if (eventResult != WebInputEventResult::NotHandled) 895 if (eventResult != WebInputEventResult::NotHandled)
896 return eventResult; 896 return eventResult;
897 897
898 return m_mouseEventManager->handleMouseDraggedEvent(mev); 898 return m_mouseEventManager->handleMouseDraggedEvent(mev);
899 } 899 }
900 900
901 WebInputEventResult EventHandler::handleMouseReleaseEvent( 901 WebInputEventResult EventHandler::handleMouseReleaseEvent(
902 const PlatformMouseEvent& mouseEvent) { 902 const WebMouseEvent& mouseEvent) {
903 TRACE_EVENT0("blink", "EventHandler::handleMouseReleaseEvent"); 903 TRACE_EVENT0("blink", "EventHandler::handleMouseReleaseEvent");
904 904
905 // For 4th/5th button in the mouse since Chrome does not yet send 905 // For 4th/5th button in the mouse since Chrome does not yet send
906 // button value to Blink but in some cases it does send the event. 906 // button value to Blink but in some cases it does send the event.
907 // This check is needed to suppress such an event (crbug.com/574959) 907 // This check is needed to suppress such an event (crbug.com/574959)
908 if (mouseEvent.pointerProperties().button == 908 if (mouseEvent.button == WebPointerProperties::Button::NoButton)
909 WebPointerProperties::Button::NoButton)
910 return WebInputEventResult::HandledSuppressed; 909 return WebInputEventResult::HandledSuppressed;
911 910
912 if (!mouseEvent.fromTouch()) 911 if (!mouseEvent.fromTouch())
913 m_frame->selection().setCaretBlinkingSuspended(false); 912 m_frame->selection().setCaretBlinkingSuspended(false);
914 913
915 if (RuntimeEnabledFeatures::middleClickAutoscrollEnabled()) { 914 if (RuntimeEnabledFeatures::middleClickAutoscrollEnabled()) {
916 if (Page* page = m_frame->page()) 915 if (Page* page = m_frame->page())
917 page->autoscrollController().handleMouseReleaseForMiddleClickAutoscroll( 916 page->autoscrollController().handleMouseReleaseForMiddleClickAutoscroll(
918 m_frame, mouseEvent); 917 m_frame, mouseEvent);
919 } 918 }
920 919
921 m_mouseEventManager->setMousePressed(false); 920 m_mouseEventManager->setMousePressed(false);
922 m_mouseEventManager->setLastKnownMousePosition(mouseEvent); 921 m_mouseEventManager->setLastKnownMousePosition(mouseEvent);
923 m_mouseEventManager->handleSvgPanIfNeeded(true); 922 m_mouseEventManager->handleSvgPanIfNeeded(true);
924 923
925 if (m_frameSetBeingResized) { 924 if (m_frameSetBeingResized) {
926 return m_mouseEventManager->setMousePositionAndDispatchMouseEvent( 925 return m_mouseEventManager->setMousePositionAndDispatchMouseEvent(
927 updateMouseEventTargetNode(m_frameSetBeingResized.get()), 926 updateMouseEventTargetNode(m_frameSetBeingResized.get()), String(),
928 EventTypeNames::mouseup, mouseEvent); 927 EventTypeNames::mouseup, mouseEvent);
929 } 928 }
930 929
931 if (m_lastScrollbarUnderMouse) { 930 if (m_lastScrollbarUnderMouse) {
932 m_mouseEventManager->invalidateClick(); 931 m_mouseEventManager->invalidateClick();
933 m_lastScrollbarUnderMouse->mouseUp(mouseEvent); 932 m_lastScrollbarUnderMouse->mouseUp(mouseEvent);
934 return updatePointerTargetAndDispatchEvents( 933 return updatePointerTargetAndDispatchEvents(
935 EventTypeNames::mouseup, m_mouseEventManager->getNodeUnderMouse(), 934 EventTypeNames::mouseup, m_mouseEventManager->getNodeUnderMouse(),
936 mouseEvent, Vector<PlatformMouseEvent>()); 935 String(), mouseEvent, Vector<WebMouseEvent>());
937 } 936 }
938 937
939 // Mouse events simulated from touch should not hit-test again. 938 // Mouse events simulated from touch should not hit-test again.
940 ASSERT(!mouseEvent.fromTouch()); 939 ASSERT(!mouseEvent.fromTouch());
941 940
942 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Release; 941 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Release;
943 HitTestRequest request(hitType); 942 HitTestRequest request(hitType);
944 MouseEventWithHitTestResults mev = 943 MouseEventWithHitTestResults mev =
945 EventHandlingUtil::performMouseEventHitTest(m_frame, request, mouseEvent); 944 EventHandlingUtil::performMouseEventHitTest(m_frame, request, mouseEvent);
946 LocalFrame* subframe = 945 LocalFrame* subframe =
(...skipping 17 matching lines...) Expand all
964 gestureIndicator = WTF::wrapUnique(new UserGestureIndicator( 963 gestureIndicator = WTF::wrapUnique(new UserGestureIndicator(
965 m_frame->localFrameRoot() 964 m_frame->localFrameRoot()
966 ->eventHandler() 965 ->eventHandler()
967 .m_lastMouseDownUserGestureToken.release())); 966 .m_lastMouseDownUserGestureToken.release()));
968 } else { 967 } else {
969 gestureIndicator = WTF::wrapUnique(new UserGestureIndicator( 968 gestureIndicator = WTF::wrapUnique(new UserGestureIndicator(
970 DocumentUserGestureToken::create(m_frame->document()))); 969 DocumentUserGestureToken::create(m_frame->document())));
971 } 970 }
972 971
973 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents( 972 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents(
974 EventTypeNames::mouseup, mev.innerNode(), mev.event(), 973 EventTypeNames::mouseup, mev.innerNode(), mev.canvasRegionId(),
975 Vector<PlatformMouseEvent>()); 974 mev.event(), Vector<WebMouseEvent>());
976 975
977 WebInputEventResult clickEventResult = 976 WebInputEventResult clickEventResult =
978 m_mouseEventManager->dispatchMouseClickIfNeeded(mev); 977 m_mouseEventManager->dispatchMouseClickIfNeeded(mev);
979 978
980 m_scrollManager->clearResizeScrollableArea(false); 979 m_scrollManager->clearResizeScrollableArea(false);
981 980
982 if (eventResult == WebInputEventResult::NotHandled) 981 if (eventResult == WebInputEventResult::NotHandled)
983 eventResult = m_mouseEventManager->handleMouseReleaseEvent(mev); 982 eventResult = m_mouseEventManager->handleMouseReleaseEvent(mev);
984 m_mouseEventManager->clearDragHeuristicState(); 983 m_mouseEventManager->clearDragHeuristicState();
985 984
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 if (matched) { 1036 if (matched) {
1038 dataTransfer->setDropEffect( 1037 dataTransfer->setDropEffect(
1039 convertDragOperationToDropZoneOperation(dragOperation)); 1038 convertDragOperationToDropZoneOperation(dragOperation));
1040 return true; 1039 return true;
1041 } 1040 }
1042 } 1041 }
1043 return false; 1042 return false;
1044 } 1043 }
1045 1044
1046 WebInputEventResult EventHandler::updateDragAndDrop( 1045 WebInputEventResult EventHandler::updateDragAndDrop(
1047 const PlatformMouseEvent& event, 1046 const WebMouseEvent& event,
1048 DataTransfer* dataTransfer) { 1047 DataTransfer* dataTransfer) {
1049 WebInputEventResult eventResult = WebInputEventResult::NotHandled; 1048 WebInputEventResult eventResult = WebInputEventResult::NotHandled;
1050 1049
1051 if (!m_frame->view()) 1050 if (!m_frame->view())
1052 return eventResult; 1051 return eventResult;
1053 1052
1054 HitTestRequest request(HitTestRequest::ReadOnly); 1053 HitTestRequest request(HitTestRequest::ReadOnly);
1055 MouseEventWithHitTestResults mev = 1054 MouseEventWithHitTestResults mev =
1056 EventHandlingUtil::performMouseEventHitTest(m_frame, request, event); 1055 EventHandlingUtil::performMouseEventHitTest(m_frame, request, event);
1057 1056
1058 // Drag events should never go to text nodes (following IE, and proper 1057 // Drag events should never go to text nodes (following IE, and proper
1059 // mouseover/out dispatch) 1058 // mouseover/out dispatch)
1060 Node* newTarget = mev.innerNode(); 1059 Node* newTarget = mev.innerNode();
1061 if (newTarget && newTarget->isTextNode()) 1060 if (newTarget && newTarget->isTextNode())
1062 newTarget = FlatTreeTraversal::parent(*newTarget); 1061 newTarget = FlatTreeTraversal::parent(*newTarget);
1063 1062
1064 if (AutoscrollController* controller = 1063 if (AutoscrollController* controller =
1065 m_scrollManager->autoscrollController()) 1064 m_scrollManager->autoscrollController()) {
1066 controller->updateDragAndDrop(newTarget, event.position(), 1065 controller->updateDragAndDrop(
1067 event.timestamp()); 1066 newTarget, flooredIntPoint(event.positionInRootFrame()),
1067 TimeTicks::FromSeconds(event.timeStampSeconds()));
1068 }
1068 1069
1069 if (m_dragTarget != newTarget) { 1070 if (m_dragTarget != newTarget) {
1070 // FIXME: this ordering was explicitly chosen to match WinIE. However, 1071 // FIXME: this ordering was explicitly chosen to match WinIE. However,
1071 // it is sometimes incorrect when dragging within subframes, as seen with 1072 // it is sometimes incorrect when dragging within subframes, as seen with
1072 // LayoutTests/fast/events/drag-in-frames.html. 1073 // LayoutTests/fast/events/drag-in-frames.html.
1073 // 1074 //
1074 // Moreover, this ordering conforms to section 7.9.4 of the HTML 5 spec. 1075 // Moreover, this ordering conforms to section 7.9.4 of the HTML 5 spec.
1075 // <http://dev.w3.org/html5/spec/Overview.html#drag-and-drop-processing-mode l>. 1076 // <http://dev.w3.org/html5/spec/Overview.html#drag-and-drop-processing-mode l>.
1076 LocalFrame* targetFrame; 1077 LocalFrame* targetFrame;
1077 if (targetIsFrame(newTarget, targetFrame)) { 1078 if (targetIsFrame(newTarget, targetFrame)) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 findDropZone(newTarget, dataTransfer)) 1131 findDropZone(newTarget, dataTransfer))
1131 eventResult = WebInputEventResult::HandledSystem; 1132 eventResult = WebInputEventResult::HandledSystem;
1132 m_shouldOnlyFireDragOverEvent = false; 1133 m_shouldOnlyFireDragOverEvent = false;
1133 } 1134 }
1134 } 1135 }
1135 m_dragTarget = newTarget; 1136 m_dragTarget = newTarget;
1136 1137
1137 return eventResult; 1138 return eventResult;
1138 } 1139 }
1139 1140
1140 void EventHandler::cancelDragAndDrop(const PlatformMouseEvent& event, 1141 void EventHandler::cancelDragAndDrop(const WebMouseEvent& event,
1141 DataTransfer* dataTransfer) { 1142 DataTransfer* dataTransfer) {
1142 LocalFrame* targetFrame; 1143 LocalFrame* targetFrame;
1143 if (targetIsFrame(m_dragTarget.get(), targetFrame)) { 1144 if (targetIsFrame(m_dragTarget.get(), targetFrame)) {
1144 if (targetFrame) 1145 if (targetFrame)
1145 targetFrame->eventHandler().cancelDragAndDrop(event, dataTransfer); 1146 targetFrame->eventHandler().cancelDragAndDrop(event, dataTransfer);
1146 } else if (m_dragTarget.get()) { 1147 } else if (m_dragTarget.get()) {
1147 if (m_mouseEventManager->dragState().m_dragSrc) 1148 if (m_mouseEventManager->dragState().m_dragSrc)
1148 m_mouseEventManager->dispatchDragSrcEvent(EventTypeNames::drag, event); 1149 m_mouseEventManager->dispatchDragSrcEvent(EventTypeNames::drag, event);
1149 m_mouseEventManager->dispatchDragEvent( 1150 m_mouseEventManager->dispatchDragEvent(
1150 EventTypeNames::dragleave, m_dragTarget.get(), event, dataTransfer); 1151 EventTypeNames::dragleave, m_dragTarget.get(), event, dataTransfer);
1151 } 1152 }
1152 clearDragState(); 1153 clearDragState();
1153 } 1154 }
1154 1155
1155 WebInputEventResult EventHandler::performDragAndDrop( 1156 WebInputEventResult EventHandler::performDragAndDrop(
1156 const PlatformMouseEvent& event, 1157 const WebMouseEvent& event,
1157 DataTransfer* dataTransfer) { 1158 DataTransfer* dataTransfer) {
1158 LocalFrame* targetFrame; 1159 LocalFrame* targetFrame;
1159 WebInputEventResult result = WebInputEventResult::NotHandled; 1160 WebInputEventResult result = WebInputEventResult::NotHandled;
1160 if (targetIsFrame(m_dragTarget.get(), targetFrame)) { 1161 if (targetIsFrame(m_dragTarget.get(), targetFrame)) {
1161 if (targetFrame) 1162 if (targetFrame)
1162 result = 1163 result =
1163 targetFrame->eventHandler().performDragAndDrop(event, dataTransfer); 1164 targetFrame->eventHandler().performDragAndDrop(event, dataTransfer);
1164 } else if (m_dragTarget.get()) { 1165 } else if (m_dragTarget.get()) {
1165 result = m_mouseEventManager->dispatchDragEvent( 1166 result = m_mouseEventManager->dispatchDragEvent(
1166 EventTypeNames::drop, m_dragTarget.get(), event, dataTransfer); 1167 EventTypeNames::drop, m_dragTarget.get(), event, dataTransfer);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); 1250 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target);
1250 } 1251 }
1251 1252
1252 void EventHandler::elementRemoved(EventTarget* target) { 1253 void EventHandler::elementRemoved(EventTarget* target) {
1253 m_pointerEventManager->elementRemoved(target); 1254 m_pointerEventManager->elementRemoved(target);
1254 } 1255 }
1255 1256
1256 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents( 1257 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(
1257 const AtomicString& mouseEventType, 1258 const AtomicString& mouseEventType,
1258 Node* targetNode, 1259 Node* targetNode,
1259 const PlatformMouseEvent& mouseEvent, 1260 const String& canvasRegionId,
1260 const Vector<PlatformMouseEvent>& coalescedEvents) { 1261 const WebMouseEvent& mouseEvent,
1262 const Vector<WebMouseEvent>& coalescedEvents) {
1261 ASSERT(mouseEventType == EventTypeNames::mousedown || 1263 ASSERT(mouseEventType == EventTypeNames::mousedown ||
1262 mouseEventType == EventTypeNames::mousemove || 1264 mouseEventType == EventTypeNames::mousemove ||
1263 mouseEventType == EventTypeNames::mouseup); 1265 mouseEventType == EventTypeNames::mouseup);
1264 1266
1265 const auto& eventResult = m_pointerEventManager->sendMousePointerEvent( 1267 const auto& eventResult = m_pointerEventManager->sendMousePointerEvent(
1266 updateMouseEventTargetNode(targetNode), mouseEventType, mouseEvent, 1268 updateMouseEventTargetNode(targetNode), canvasRegionId, mouseEventType,
1267 coalescedEvents); 1269 mouseEvent, coalescedEvents);
1268 return eventResult; 1270 return eventResult;
1269 } 1271 }
1270 1272
1271 WebInputEventResult EventHandler::handleWheelEvent( 1273 WebInputEventResult EventHandler::handleWheelEvent(
1272 const WebMouseWheelEvent& event) { 1274 const WebMouseWheelEvent& event) {
1273 #if OS(MACOSX) 1275 #if OS(MACOSX)
1274 // Filter Mac OS specific phases, usually with a zero-delta. 1276 // Filter Mac OS specific phases, usually with a zero-delta.
1275 // https://crbug.com/553732 1277 // https://crbug.com/553732
1276 // TODO(chongz): EventSender sends events with 1278 // TODO(chongz): EventSender sends events with
1277 // |WebMouseWheelEvent::PhaseNone|, 1279 // |WebMouseWheelEvent::PhaseNone|,
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 if (exitedFrameInDocument != lastEnteredFrameInDocument) 1612 if (exitedFrameInDocument != lastEnteredFrameInDocument)
1611 exitedFrameChain.push_back(exitedFrameInDocument); 1613 exitedFrameChain.push_back(exitedFrameInDocument);
1612 else if (nextExitedFrameInDocument && indexEnteredFrameChain) 1614 else if (nextExitedFrameInDocument && indexEnteredFrameChain)
1613 --indexEnteredFrameChain; 1615 --indexEnteredFrameChain;
1614 } 1616 }
1615 exitedFrameInDocument = nextExitedFrameInDocument; 1617 exitedFrameInDocument = nextExitedFrameInDocument;
1616 } 1618 }
1617 1619
1618 const WebGestureEvent& gestureEvent = targetedEvent.event(); 1620 const WebGestureEvent& gestureEvent = targetedEvent.event();
1619 unsigned modifiers = gestureEvent.modifiers(); 1621 unsigned modifiers = gestureEvent.modifiers();
1620 PlatformMouseEvent fakeMouseMove( 1622 WebMouseEvent fakeMouseMove(
1621 gestureEvent, WebPointerProperties::Button::NoButton, 1623 WebInputEvent::MouseMove, gestureEvent,
1622 PlatformEvent::MouseMoved, 1624 WebPointerProperties::Button::NoButton,
1623 /* clickCount */ 0, static_cast<PlatformEvent::Modifiers>(modifiers), 1625 /* clickCount */ 0,
1624 PlatformMouseEvent::FromTouch, 1626 modifiers | WebInputEvent::Modifiers::IsCompatibilityEventForTouch,
1625 TimeTicks::FromSeconds(gestureEvent.timeStampSeconds()), 1627 gestureEvent.timeStampSeconds());
1626 WebPointerProperties::PointerType::Mouse);
1627 1628
1628 // Update the mouseout/mouseleave event 1629 // Update the mouseout/mouseleave event
1629 size_t indexExitedFrameChain = exitedFrameChain.size(); 1630 size_t indexExitedFrameChain = exitedFrameChain.size();
1630 while (indexExitedFrameChain) { 1631 while (indexExitedFrameChain) {
1631 LocalFrame* leaveFrame = exitedFrameChain[--indexExitedFrameChain]; 1632 LocalFrame* leaveFrame = exitedFrameChain[--indexExitedFrameChain];
1632 leaveFrame->eventHandler().m_mouseEventManager->setNodeUnderMouse( 1633 leaveFrame->eventHandler().m_mouseEventManager->setNodeUnderMouse(
1633 updateMouseEventTargetNode(nullptr), fakeMouseMove); 1634 updateMouseEventTargetNode(nullptr), String(), fakeMouseMove);
1634 } 1635 }
1635 1636
1636 // update the mouseover/mouseenter event 1637 // update the mouseover/mouseenter event
1637 while (indexEnteredFrameChain) { 1638 while (indexEnteredFrameChain) {
1638 Frame* parentFrame = 1639 Frame* parentFrame =
1639 enteredFrameChain[--indexEnteredFrameChain]->tree().parent(); 1640 enteredFrameChain[--indexEnteredFrameChain]->tree().parent();
1640 if (parentFrame && parentFrame->isLocalFrame()) 1641 if (parentFrame && parentFrame->isLocalFrame()) {
1641 toLocalFrame(parentFrame) 1642 toLocalFrame(parentFrame)
1642 ->eventHandler() 1643 ->eventHandler()
1643 .m_mouseEventManager->setNodeUnderMouse( 1644 .m_mouseEventManager->setNodeUnderMouse(
1644 updateMouseEventTargetNode(toHTMLFrameOwnerElement( 1645 updateMouseEventTargetNode(toHTMLFrameOwnerElement(
1645 enteredFrameChain[indexEnteredFrameChain]->owner())), 1646 enteredFrameChain[indexEnteredFrameChain]->owner())),
1646 fakeMouseMove); 1647 String(), fakeMouseMove);
1648 }
1647 } 1649 }
1648 } 1650 }
1649 1651
1650 GestureEventWithHitTestResults EventHandler::targetGestureEvent( 1652 GestureEventWithHitTestResults EventHandler::targetGestureEvent(
1651 const WebGestureEvent& gestureEvent, 1653 const WebGestureEvent& gestureEvent,
1652 bool readOnly) { 1654 bool readOnly) {
1653 TRACE_EVENT0("input", "EventHandler::targetGestureEvent"); 1655 TRACE_EVENT0("input", "EventHandler::targetGestureEvent");
1654 1656
1655 ASSERT(m_frame == m_frame->localFrameRoot()); 1657 ASSERT(m_frame == m_frame->localFrameRoot());
1656 // Scrolling events get hit tested per frame (like wheel events do). 1658 // Scrolling events get hit tested per frame (like wheel events do).
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1775 // crbug.com/398914 1777 // crbug.com/398914
1776 if (adjusted) { 1778 if (adjusted) {
1777 hitTestResult->resolveRectBasedTest( 1779 hitTestResult->resolveRectBasedTest(
1778 adjustedNode, m_frame->view()->rootFrameToContents(adjustedPoint)); 1780 adjustedNode, m_frame->view()->rootFrameToContents(adjustedPoint));
1779 gestureEvent->applyTouchAdjustment( 1781 gestureEvent->applyTouchAdjustment(
1780 WebFloatPoint(adjustedPoint.x(), adjustedPoint.y())); 1782 WebFloatPoint(adjustedPoint.x(), adjustedPoint.y()));
1781 } 1783 }
1782 } 1784 }
1783 1785
1784 WebInputEventResult EventHandler::sendContextMenuEvent( 1786 WebInputEventResult EventHandler::sendContextMenuEvent(
1785 const PlatformMouseEvent& event, 1787 const WebMouseEvent& event,
1786 Node* overrideTargetNode) { 1788 Node* overrideTargetNode) {
1787 FrameView* v = m_frame->view(); 1789 FrameView* v = m_frame->view();
1788 if (!v) 1790 if (!v)
1789 return WebInputEventResult::NotHandled; 1791 return WebInputEventResult::NotHandled;
1790 1792
1791 // Clear mouse press state to avoid initiating a drag while context menu is 1793 // Clear mouse press state to avoid initiating a drag while context menu is
1792 // up. 1794 // up.
1793 m_mouseEventManager->setMousePressed(false); 1795 m_mouseEventManager->setMousePressed(false);
1794 LayoutPoint positionInContents = v->rootFrameToContents(event.position()); 1796 LayoutPoint positionInContents =
1797 v->rootFrameToContents(flooredIntPoint(event.positionInRootFrame()));
1795 HitTestRequest request(HitTestRequest::Active); 1798 HitTestRequest request(HitTestRequest::Active);
1796 MouseEventWithHitTestResults mev = 1799 MouseEventWithHitTestResults mev =
1797 m_frame->document()->performMouseEventHitTest(request, positionInContents, 1800 m_frame->document()->performMouseEventHitTest(request, positionInContents,
1798 event); 1801 event);
1799 // Since |Document::performMouseEventHitTest()| modifies layout tree for 1802 // Since |Document::performMouseEventHitTest()| modifies layout tree for
1800 // setting hover element, we need to update layout tree for requirement of 1803 // setting hover element, we need to update layout tree for requirement of
1801 // |SelectionController::sendContextMenuEvent()|. 1804 // |SelectionController::sendContextMenuEvent()|.
1802 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); 1805 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets();
1803 1806
1804 selectionController().sendContextMenuEvent(mev, positionInContents); 1807 selectionController().sendContextMenuEvent(mev, positionInContents);
1805 1808
1806 Node* targetNode = overrideTargetNode ? overrideTargetNode : mev.innerNode(); 1809 Node* targetNode = overrideTargetNode ? overrideTargetNode : mev.innerNode();
1807 return m_mouseEventManager->dispatchMouseEvent( 1810 return m_mouseEventManager->dispatchMouseEvent(
1808 updateMouseEventTargetNode(targetNode), EventTypeNames::contextmenu, 1811 updateMouseEventTargetNode(targetNode), EventTypeNames::contextmenu,
1809 event, 0); 1812 event, mev.hitTestResult().canvasRegionId(), 0);
1810 } 1813 }
1811 1814
1812 WebInputEventResult EventHandler::sendContextMenuEventForKey( 1815 WebInputEventResult EventHandler::sendContextMenuEventForKey(
1813 Element* overrideTargetElement) { 1816 Element* overrideTargetElement) {
1814 FrameView* view = m_frame->view(); 1817 FrameView* view = m_frame->view();
1815 if (!view) 1818 if (!view)
1816 return WebInputEventResult::NotHandled; 1819 return WebInputEventResult::NotHandled;
1817 1820
1818 Document* doc = m_frame->document(); 1821 Document* doc = m_frame->document();
1819 if (!doc) 1822 if (!doc)
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1876 1879
1877 // Use the focused node as the target for hover and active. 1880 // Use the focused node as the target for hover and active.
1878 HitTestRequest request(HitTestRequest::Active); 1881 HitTestRequest request(HitTestRequest::Active);
1879 HitTestResult result(request, locationInRootFrame); 1882 HitTestResult result(request, locationInRootFrame);
1880 result.setInnerNode(targetNode); 1883 result.setInnerNode(targetNode);
1881 doc->updateHoverActiveState(request, result.innerElement(), 1884 doc->updateHoverActiveState(request, result.innerElement(),
1882 result.scrollbar()); 1885 result.scrollbar());
1883 1886
1884 // The contextmenu event is a mouse event even when invoked using the 1887 // The contextmenu event is a mouse event even when invoked using the
1885 // keyboard. This is required for web compatibility. 1888 // keyboard. This is required for web compatibility.
1886 PlatformEvent::EventType eventType = PlatformEvent::MousePressed; 1889 WebInputEvent::Type eventType = WebInputEvent::MouseDown;
1887 if (m_frame->settings() && m_frame->settings()->getShowContextMenuOnMouseUp()) 1890 if (m_frame->settings() && m_frame->settings()->getShowContextMenuOnMouseUp())
1888 eventType = PlatformEvent::MouseReleased; 1891 eventType = WebInputEvent::MouseUp;
1889 1892
1890 PlatformMouseEvent mouseEvent( 1893 WebMouseEvent mouseEvent(
1891 locationInRootFrame, globalPosition, 1894 eventType,
1892 WebPointerProperties::Button::NoButton, eventType, /* clickCount */ 0, 1895 WebFloatPoint(locationInRootFrame.x(), locationInRootFrame.y()),
1893 PlatformEvent::NoModifiers, PlatformMouseEvent::RealOrIndistinguishable, 1896 WebFloatPoint(globalPosition.x(), globalPosition.y()),
1894 TimeTicks::Now(), WebPointerProperties::PointerType::Mouse); 1897 WebPointerProperties::Button::NoButton, /* clickCount */ 0,
1898 PlatformEvent::NoModifiers, TimeTicks::Now().InSeconds());
1899
1900 // TODO(dtapuska): Transition the mouseEvent to be created really in viewport
1901 // coordinates instead of root frame coordinates.
1902 mouseEvent.setFrameScale(1);
1895 1903
1896 return sendContextMenuEvent(mouseEvent, overrideTargetElement); 1904 return sendContextMenuEvent(mouseEvent, overrideTargetElement);
1897 } 1905 }
1898 1906
1899 void EventHandler::scheduleHoverStateUpdate() { 1907 void EventHandler::scheduleHoverStateUpdate() {
1900 // TODO(https://crbug.com/668758): Use a normal BeginFrame update for this. 1908 // TODO(https://crbug.com/668758): Use a normal BeginFrame update for this.
1901 if (!m_hoverTimer.isActive() && 1909 if (!m_hoverTimer.isActive() &&
1902 !m_mouseEventManager->isMousePositionUnknown()) 1910 !m_mouseEventManager->isMousePositionUnknown())
1903 m_hoverTimer.startOneShot(0, BLINK_FROM_HERE); 1911 m_hoverTimer.startOneShot(0, BLINK_FROM_HERE);
1904 } 1912 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1980 WebInputEventResult EventHandler::keyEvent( 1988 WebInputEventResult EventHandler::keyEvent(
1981 const WebKeyboardEvent& initialKeyEvent) { 1989 const WebKeyboardEvent& initialKeyEvent) {
1982 return m_keyboardEventManager->keyEvent(initialKeyEvent); 1990 return m_keyboardEventManager->keyEvent(initialKeyEvent);
1983 } 1991 }
1984 1992
1985 void EventHandler::defaultKeyboardEventHandler(KeyboardEvent* event) { 1993 void EventHandler::defaultKeyboardEventHandler(KeyboardEvent* event) {
1986 m_keyboardEventManager->defaultKeyboardEventHandler( 1994 m_keyboardEventManager->defaultKeyboardEventHandler(
1987 event, m_mouseEventManager->mousePressNode()); 1995 event, m_mouseEventManager->mousePressNode());
1988 } 1996 }
1989 1997
1990 void EventHandler::dragSourceEndedAt(const PlatformMouseEvent& event, 1998 void EventHandler::dragSourceEndedAt(const WebMouseEvent& event,
1991 DragOperation operation) { 1999 DragOperation operation) {
1992 // Asides from routing the event to the correct frame, the hit test is also an 2000 // Asides from routing the event to the correct frame, the hit test is also an
1993 // opportunity for Layer to update the :hover and :active pseudoclasses. 2001 // opportunity for Layer to update the :hover and :active pseudoclasses.
1994 HitTestRequest request(HitTestRequest::Release); 2002 HitTestRequest request(HitTestRequest::Release);
1995 MouseEventWithHitTestResults mev = 2003 MouseEventWithHitTestResults mev =
1996 EventHandlingUtil::performMouseEventHitTest(m_frame, request, event); 2004 EventHandlingUtil::performMouseEventHitTest(m_frame, request, event);
1997 2005
1998 LocalFrame* targetFrame; 2006 LocalFrame* targetFrame;
1999 if (targetIsFrame(mev.innerNode(), targetFrame)) { 2007 if (targetIsFrame(mev.innerNode(), targetFrame)) {
2000 if (targetFrame) { 2008 if (targetFrame) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
2093 selectionController().passMousePressEventToSubframe(mev); 2101 selectionController().passMousePressEventToSubframe(mev);
2094 WebInputEventResult result = 2102 WebInputEventResult result =
2095 subframe->eventHandler().handleMousePressEvent(mev.event()); 2103 subframe->eventHandler().handleMousePressEvent(mev.event());
2096 if (result != WebInputEventResult::NotHandled) 2104 if (result != WebInputEventResult::NotHandled)
2097 return result; 2105 return result;
2098 return WebInputEventResult::HandledSystem; 2106 return WebInputEventResult::HandledSystem;
2099 } 2107 }
2100 2108
2101 WebInputEventResult EventHandler::passMouseMoveEventToSubframe( 2109 WebInputEventResult EventHandler::passMouseMoveEventToSubframe(
2102 MouseEventWithHitTestResults& mev, 2110 MouseEventWithHitTestResults& mev,
2103 const Vector<PlatformMouseEvent>& coalescedEvents, 2111 const Vector<WebMouseEvent>& coalescedEvents,
2104 LocalFrame* subframe, 2112 LocalFrame* subframe,
2105 HitTestResult* hoveredNode) { 2113 HitTestResult* hoveredNode) {
2106 if (m_mouseEventManager->mouseDownMayStartDrag()) 2114 if (m_mouseEventManager->mouseDownMayStartDrag())
2107 return WebInputEventResult::NotHandled; 2115 return WebInputEventResult::NotHandled;
2108 WebInputEventResult result = 2116 WebInputEventResult result =
2109 subframe->eventHandler().handleMouseMoveOrLeaveEvent( 2117 subframe->eventHandler().handleMouseMoveOrLeaveEvent(
2110 mev.event(), coalescedEvents, hoveredNode); 2118 mev.event(), coalescedEvents, hoveredNode);
2111 if (result != WebInputEventResult::NotHandled) 2119 if (result != WebInputEventResult::NotHandled)
2112 return result; 2120 return result;
2113 return WebInputEventResult::HandledSystem; 2121 return WebInputEventResult::HandledSystem;
(...skipping 10 matching lines...) Expand all
2124 } 2132 }
2125 2133
2126 FrameHost* EventHandler::frameHost() const { 2134 FrameHost* EventHandler::frameHost() const {
2127 if (!m_frame->page()) 2135 if (!m_frame->page())
2128 return nullptr; 2136 return nullptr;
2129 2137
2130 return &m_frame->page()->frameHost(); 2138 return &m_frame->page()->frameHost();
2131 } 2139 }
2132 2140
2133 } // namespace blink 2141 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/input/EventHandler.h ('k') | third_party/WebKit/Source/core/input/EventHandlerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698