OLD | NEW |
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 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 m_mouseEventManager->setClickCount(mouseEvent.clickCount()); | 641 m_mouseEventManager->setClickCount(mouseEvent.clickCount()); |
642 m_mouseEventManager->setClickNode( | 642 m_mouseEventManager->setClickNode( |
643 mev.innerNode()->isTextNode() | 643 mev.innerNode()->isTextNode() |
644 ? FlatTreeTraversal::parent(*mev.innerNode()) | 644 ? FlatTreeTraversal::parent(*mev.innerNode()) |
645 : mev.innerNode()); | 645 : mev.innerNode()); |
646 | 646 |
647 if (!mouseEvent.fromTouch()) | 647 if (!mouseEvent.fromTouch()) |
648 m_frame->selection().setCaretBlinkingSuspended(true); | 648 m_frame->selection().setCaretBlinkingSuspended(true); |
649 | 649 |
650 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents( | 650 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents( |
651 EventTypeNames::mousedown, mev.innerNode(), mev.event()); | 651 EventTypeNames::mousedown, mev.innerNode(), mev.event(), |
| 652 Vector<PlatformMouseEvent>()); |
652 | 653 |
653 if (eventResult == WebInputEventResult::NotHandled && m_frame->view()) { | 654 if (eventResult == WebInputEventResult::NotHandled && m_frame->view()) { |
654 FrameView* view = m_frame->view(); | 655 FrameView* view = m_frame->view(); |
655 PaintLayer* layer = mev.innerNode()->layoutObject() | 656 PaintLayer* layer = mev.innerNode()->layoutObject() |
656 ? mev.innerNode()->layoutObject()->enclosingLayer() | 657 ? mev.innerNode()->layoutObject()->enclosingLayer() |
657 : nullptr; | 658 : nullptr; |
658 IntPoint p = view->rootFrameToContents(mouseEvent.position()); | 659 IntPoint p = view->rootFrameToContents(mouseEvent.position()); |
659 if (layer && layer->getScrollableArea() && | 660 if (layer && layer->getScrollableArea() && |
660 layer->getScrollableArea()->isPointInResizeControl(p, | 661 layer->getScrollableArea()->isPointInResizeControl(p, |
661 ResizerForPointer)) { | 662 ResizerForPointer)) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 ASSERT(mouseEvent.type() == PlatformEvent::MousePressed); | 720 ASSERT(mouseEvent.type() == PlatformEvent::MousePressed); |
720 HitTestResult result = mev.hitTestResult(); | 721 HitTestResult result = mev.hitTestResult(); |
721 result.setToShadowHostIfInUserAgentShadowRoot(); | 722 result.setToShadowHostIfInUserAgentShadowRoot(); |
722 m_frame->chromeClient().onMouseDown(result.innerNode()); | 723 m_frame->chromeClient().onMouseDown(result.innerNode()); |
723 } | 724 } |
724 | 725 |
725 return eventResult; | 726 return eventResult; |
726 } | 727 } |
727 | 728 |
728 WebInputEventResult EventHandler::handleMouseMoveEvent( | 729 WebInputEventResult EventHandler::handleMouseMoveEvent( |
729 const PlatformMouseEvent& event) { | 730 const PlatformMouseEvent& event, |
| 731 const Vector<PlatformMouseEvent>& coalescedEvents) { |
730 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); | 732 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); |
731 | 733 |
732 HitTestResult hoveredNode = HitTestResult(); | 734 HitTestResult hoveredNode = HitTestResult(); |
733 WebInputEventResult result = handleMouseMoveOrLeaveEvent(event, &hoveredNode); | 735 WebInputEventResult result = |
| 736 handleMouseMoveOrLeaveEvent(event, coalescedEvents, &hoveredNode); |
734 | 737 |
735 Page* page = m_frame->page(); | 738 Page* page = m_frame->page(); |
736 if (!page) | 739 if (!page) |
737 return result; | 740 return result; |
738 | 741 |
739 if (PaintLayer* layer = | 742 if (PaintLayer* layer = |
740 EventHandlingUtil::layerForNode(hoveredNode.innerNode())) { | 743 EventHandlingUtil::layerForNode(hoveredNode.innerNode())) { |
741 if (ScrollableArea* layerScrollableArea = | 744 if (ScrollableArea* layerScrollableArea = |
742 EventHandlingUtil::associatedScrollableArea(layer)) | 745 EventHandlingUtil::associatedScrollableArea(layer)) |
743 layerScrollableArea->mouseMovedInContentArea(); | 746 layerScrollableArea->mouseMovedInContentArea(); |
744 } | 747 } |
745 | 748 |
746 if (FrameView* frameView = m_frame->view()) | 749 if (FrameView* frameView = m_frame->view()) |
747 frameView->mouseMovedInContentArea(); | 750 frameView->mouseMovedInContentArea(); |
748 | 751 |
749 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); | 752 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); |
750 page->chromeClient().mouseDidMoveOverElement(*m_frame, hoveredNode); | 753 page->chromeClient().mouseDidMoveOverElement(*m_frame, hoveredNode); |
751 | 754 |
752 return result; | 755 return result; |
753 } | 756 } |
754 | 757 |
755 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) { | 758 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) { |
756 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); | 759 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); |
757 | 760 |
758 handleMouseMoveOrLeaveEvent(event, 0, false, true); | 761 handleMouseMoveOrLeaveEvent(event, Vector<PlatformMouseEvent>(), 0, false, |
| 762 true); |
759 } | 763 } |
760 | 764 |
761 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent( | 765 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent( |
762 const PlatformMouseEvent& mouseEvent, | 766 const PlatformMouseEvent& mouseEvent, |
| 767 const Vector<PlatformMouseEvent>& coalescedEvents, |
763 HitTestResult* hoveredNode, | 768 HitTestResult* hoveredNode, |
764 bool onlyUpdateScrollbars, | 769 bool onlyUpdateScrollbars, |
765 bool forceLeave) { | 770 bool forceLeave) { |
766 ASSERT(m_frame); | 771 ASSERT(m_frame); |
767 ASSERT(m_frame->view()); | 772 ASSERT(m_frame->view()); |
768 | 773 |
769 m_mouseEventManager->setLastKnownMousePosition(mouseEvent); | 774 m_mouseEventManager->setLastKnownMousePosition(mouseEvent); |
770 | 775 |
771 m_hoverTimer.stop(); | 776 m_hoverTimer.stop(); |
772 m_cursorUpdateTimer.stop(); | 777 m_cursorUpdateTimer.stop(); |
773 | 778 |
774 m_mouseEventManager->cancelFakeMouseMoveEvent(); | 779 m_mouseEventManager->cancelFakeMouseMoveEvent(); |
775 m_mouseEventManager->handleSvgPanIfNeeded(false); | 780 m_mouseEventManager->handleSvgPanIfNeeded(false); |
776 | 781 |
777 if (m_frameSetBeingResized) { | 782 if (m_frameSetBeingResized) { |
778 return updatePointerTargetAndDispatchEvents( | 783 return updatePointerTargetAndDispatchEvents(EventTypeNames::mousemove, |
779 EventTypeNames::mousemove, m_frameSetBeingResized.get(), mouseEvent); | 784 m_frameSetBeingResized.get(), |
| 785 mouseEvent, coalescedEvents); |
780 } | 786 } |
781 | 787 |
782 // Send events right to a scrollbar if the mouse is pressed. | 788 // Send events right to a scrollbar if the mouse is pressed. |
783 if (m_lastScrollbarUnderMouse && m_mouseEventManager->mousePressed()) { | 789 if (m_lastScrollbarUnderMouse && m_mouseEventManager->mousePressed()) { |
784 m_lastScrollbarUnderMouse->mouseMoved(mouseEvent); | 790 m_lastScrollbarUnderMouse->mouseMoved(mouseEvent); |
785 return WebInputEventResult::HandledSystem; | 791 return WebInputEventResult::HandledSystem; |
786 } | 792 } |
787 | 793 |
788 // Mouse events simulated from touch should not hit-test again. | 794 // Mouse events simulated from touch should not hit-test again. |
789 ASSERT(!mouseEvent.fromTouch()); | 795 ASSERT(!mouseEvent.fromTouch()); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 mev.event()); | 856 mev.event()); |
851 | 857 |
852 if (newSubframe) { | 858 if (newSubframe) { |
853 // Update over/out state before passing the event to the subframe. | 859 // Update over/out state before passing the event to the subframe. |
854 m_pointerEventManager->sendMouseAndPointerBoundaryEvents( | 860 m_pointerEventManager->sendMouseAndPointerBoundaryEvents( |
855 updateMouseEventTargetNode(mev.innerNode()), mev.event()); | 861 updateMouseEventTargetNode(mev.innerNode()), mev.event()); |
856 | 862 |
857 // Event dispatch in sendMouseAndPointerBoundaryEvents may have caused the | 863 // Event dispatch in sendMouseAndPointerBoundaryEvents may have caused the |
858 // subframe of the target node to be detached from its FrameView, in which | 864 // subframe of the target node to be detached from its FrameView, in which |
859 // case the event should not be passed. | 865 // case the event should not be passed. |
860 if (newSubframe->view()) | 866 if (newSubframe->view()) { |
861 eventResult = passMouseMoveEventToSubframe(mev, newSubframe, hoveredNode); | 867 eventResult = passMouseMoveEventToSubframe(mev, coalescedEvents, |
| 868 newSubframe, hoveredNode); |
| 869 } |
862 } else { | 870 } else { |
863 if (scrollbar && !m_mouseEventManager->mousePressed()) { | 871 if (scrollbar && !m_mouseEventManager->mousePressed()) { |
864 // Handle hover effects on platforms that support visual feedback on | 872 // Handle hover effects on platforms that support visual feedback on |
865 // scrollbar hovering. | 873 // scrollbar hovering. |
866 scrollbar->mouseMoved(mev.event()); | 874 scrollbar->mouseMoved(mev.event()); |
867 } | 875 } |
868 if (FrameView* view = m_frame->view()) { | 876 if (FrameView* view = m_frame->view()) { |
869 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); | 877 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); |
870 if (optionalCursor.isCursorChange()) { | 878 if (optionalCursor.isCursorChange()) { |
871 view->setCursor(optionalCursor.cursor()); | 879 view->setCursor(optionalCursor.cursor()); |
872 } | 880 } |
873 } | 881 } |
874 } | 882 } |
875 | 883 |
876 m_lastMouseMoveEventSubframe = newSubframe; | 884 m_lastMouseMoveEventSubframe = newSubframe; |
877 | 885 |
878 if (eventResult != WebInputEventResult::NotHandled) | 886 if (eventResult != WebInputEventResult::NotHandled) |
879 return eventResult; | 887 return eventResult; |
880 | 888 |
881 eventResult = updatePointerTargetAndDispatchEvents( | 889 eventResult = updatePointerTargetAndDispatchEvents( |
882 EventTypeNames::mousemove, mev.innerNode(), mev.event()); | 890 EventTypeNames::mousemove, mev.innerNode(), mev.event(), coalescedEvents); |
883 if (eventResult != WebInputEventResult::NotHandled) | 891 if (eventResult != WebInputEventResult::NotHandled) |
884 return eventResult; | 892 return eventResult; |
885 | 893 |
886 return m_mouseEventManager->handleMouseDraggedEvent(mev); | 894 return m_mouseEventManager->handleMouseDraggedEvent(mev); |
887 } | 895 } |
888 | 896 |
889 WebInputEventResult EventHandler::handleMouseReleaseEvent( | 897 WebInputEventResult EventHandler::handleMouseReleaseEvent( |
890 const PlatformMouseEvent& mouseEvent) { | 898 const PlatformMouseEvent& mouseEvent) { |
891 TRACE_EVENT0("blink", "EventHandler::handleMouseReleaseEvent"); | 899 TRACE_EVENT0("blink", "EventHandler::handleMouseReleaseEvent"); |
892 | 900 |
(...skipping 21 matching lines...) Expand all Loading... |
914 return m_mouseEventManager->setMousePositionAndDispatchMouseEvent( | 922 return m_mouseEventManager->setMousePositionAndDispatchMouseEvent( |
915 updateMouseEventTargetNode(m_frameSetBeingResized.get()), | 923 updateMouseEventTargetNode(m_frameSetBeingResized.get()), |
916 EventTypeNames::mouseup, mouseEvent); | 924 EventTypeNames::mouseup, mouseEvent); |
917 } | 925 } |
918 | 926 |
919 if (m_lastScrollbarUnderMouse) { | 927 if (m_lastScrollbarUnderMouse) { |
920 m_mouseEventManager->invalidateClick(); | 928 m_mouseEventManager->invalidateClick(); |
921 m_lastScrollbarUnderMouse->mouseUp(mouseEvent); | 929 m_lastScrollbarUnderMouse->mouseUp(mouseEvent); |
922 return updatePointerTargetAndDispatchEvents( | 930 return updatePointerTargetAndDispatchEvents( |
923 EventTypeNames::mouseup, m_mouseEventManager->getNodeUnderMouse(), | 931 EventTypeNames::mouseup, m_mouseEventManager->getNodeUnderMouse(), |
924 mouseEvent); | 932 mouseEvent, Vector<PlatformMouseEvent>()); |
925 } | 933 } |
926 | 934 |
927 // Mouse events simulated from touch should not hit-test again. | 935 // Mouse events simulated from touch should not hit-test again. |
928 ASSERT(!mouseEvent.fromTouch()); | 936 ASSERT(!mouseEvent.fromTouch()); |
929 | 937 |
930 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Release; | 938 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Release; |
931 HitTestRequest request(hitType); | 939 HitTestRequest request(hitType); |
932 MouseEventWithHitTestResults mev = | 940 MouseEventWithHitTestResults mev = |
933 EventHandlingUtil::performMouseEventHitTest(m_frame, request, mouseEvent); | 941 EventHandlingUtil::performMouseEventHitTest(m_frame, request, mouseEvent); |
934 LocalFrame* subframe = | 942 LocalFrame* subframe = |
(...skipping 17 matching lines...) Expand all Loading... |
952 gestureIndicator = wrapUnique(new UserGestureIndicator( | 960 gestureIndicator = wrapUnique(new UserGestureIndicator( |
953 m_frame->localFrameRoot() | 961 m_frame->localFrameRoot() |
954 ->eventHandler() | 962 ->eventHandler() |
955 .m_lastMouseDownUserGestureToken.release())); | 963 .m_lastMouseDownUserGestureToken.release())); |
956 } else { | 964 } else { |
957 gestureIndicator = wrapUnique(new UserGestureIndicator( | 965 gestureIndicator = wrapUnique(new UserGestureIndicator( |
958 DocumentUserGestureToken::create(m_frame->document()))); | 966 DocumentUserGestureToken::create(m_frame->document()))); |
959 } | 967 } |
960 | 968 |
961 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents( | 969 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents( |
962 EventTypeNames::mouseup, mev.innerNode(), mev.event()); | 970 EventTypeNames::mouseup, mev.innerNode(), mev.event(), |
| 971 Vector<PlatformMouseEvent>()); |
963 | 972 |
964 WebInputEventResult clickEventResult = | 973 WebInputEventResult clickEventResult = |
965 m_mouseEventManager->dispatchMouseClickIfNeeded(mev); | 974 m_mouseEventManager->dispatchMouseClickIfNeeded(mev); |
966 | 975 |
967 m_scrollManager->clearResizeScrollableArea(false); | 976 m_scrollManager->clearResizeScrollableArea(false); |
968 | 977 |
969 if (eventResult == WebInputEventResult::NotHandled) | 978 if (eventResult == WebInputEventResult::NotHandled) |
970 eventResult = m_mouseEventManager->handleMouseReleaseEvent(mev); | 979 eventResult = m_mouseEventManager->handleMouseReleaseEvent(mev); |
971 m_mouseEventManager->clearDragHeuristicState(); | 980 m_mouseEventManager->clearDragHeuristicState(); |
972 | 981 |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1243 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); | 1252 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); |
1244 } | 1253 } |
1245 | 1254 |
1246 void EventHandler::elementRemoved(EventTarget* target) { | 1255 void EventHandler::elementRemoved(EventTarget* target) { |
1247 m_pointerEventManager->elementRemoved(target); | 1256 m_pointerEventManager->elementRemoved(target); |
1248 } | 1257 } |
1249 | 1258 |
1250 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents( | 1259 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents( |
1251 const AtomicString& mouseEventType, | 1260 const AtomicString& mouseEventType, |
1252 Node* targetNode, | 1261 Node* targetNode, |
1253 const PlatformMouseEvent& mouseEvent) { | 1262 const PlatformMouseEvent& mouseEvent, |
| 1263 const Vector<PlatformMouseEvent>& coalescedEvents) { |
1254 ASSERT(mouseEventType == EventTypeNames::mousedown || | 1264 ASSERT(mouseEventType == EventTypeNames::mousedown || |
1255 mouseEventType == EventTypeNames::mousemove || | 1265 mouseEventType == EventTypeNames::mousemove || |
1256 mouseEventType == EventTypeNames::mouseup); | 1266 mouseEventType == EventTypeNames::mouseup); |
1257 | 1267 |
1258 const auto& eventResult = m_pointerEventManager->sendMousePointerEvent( | 1268 const auto& eventResult = m_pointerEventManager->sendMousePointerEvent( |
1259 updateMouseEventTargetNode(targetNode), mouseEventType, mouseEvent); | 1269 updateMouseEventTargetNode(targetNode), mouseEventType, mouseEvent, |
| 1270 coalescedEvents); |
1260 return eventResult; | 1271 return eventResult; |
1261 } | 1272 } |
1262 | 1273 |
1263 WebInputEventResult EventHandler::handleWheelEvent( | 1274 WebInputEventResult EventHandler::handleWheelEvent( |
1264 const PlatformWheelEvent& event) { | 1275 const PlatformWheelEvent& event) { |
1265 #if OS(MACOSX) | 1276 #if OS(MACOSX) |
1266 // Filter Mac OS specific phases, usually with a zero-delta. | 1277 // Filter Mac OS specific phases, usually with a zero-delta. |
1267 // https://crbug.com/553732 | 1278 // https://crbug.com/553732 |
1268 // TODO(chongz): EventSender sends events with |PlatformWheelEventPhaseNone|, | 1279 // TODO(chongz): EventSender sends events with |PlatformWheelEventPhaseNone|, |
1269 // but it shouldn't. | 1280 // but it shouldn't. |
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2054 | 2065 |
2055 // Send mouse entered if we're setting a new scrollbar. | 2066 // Send mouse entered if we're setting a new scrollbar. |
2056 if (scrollbar && setLast) | 2067 if (scrollbar && setLast) |
2057 scrollbar->mouseEntered(); | 2068 scrollbar->mouseEntered(); |
2058 | 2069 |
2059 m_lastScrollbarUnderMouse = setLast ? scrollbar : nullptr; | 2070 m_lastScrollbarUnderMouse = setLast ? scrollbar : nullptr; |
2060 } | 2071 } |
2061 } | 2072 } |
2062 | 2073 |
2063 WebInputEventResult EventHandler::handleTouchEvent( | 2074 WebInputEventResult EventHandler::handleTouchEvent( |
2064 const PlatformTouchEvent& event) { | 2075 const PlatformTouchEvent& event, |
| 2076 const Vector<PlatformTouchEvent>& coalescedEvents) { |
2065 TRACE_EVENT0("blink", "EventHandler::handleTouchEvent"); | 2077 TRACE_EVENT0("blink", "EventHandler::handleTouchEvent"); |
2066 return m_pointerEventManager->handleTouchEvents(event); | 2078 return m_pointerEventManager->handleTouchEvents(event, coalescedEvents); |
2067 } | 2079 } |
2068 | 2080 |
2069 WebInputEventResult EventHandler::passMousePressEventToSubframe( | 2081 WebInputEventResult EventHandler::passMousePressEventToSubframe( |
2070 MouseEventWithHitTestResults& mev, | 2082 MouseEventWithHitTestResults& mev, |
2071 LocalFrame* subframe) { | 2083 LocalFrame* subframe) { |
2072 selectionController().passMousePressEventToSubframe(mev); | 2084 selectionController().passMousePressEventToSubframe(mev); |
2073 WebInputEventResult result = | 2085 WebInputEventResult result = |
2074 subframe->eventHandler().handleMousePressEvent(mev.event()); | 2086 subframe->eventHandler().handleMousePressEvent(mev.event()); |
2075 if (result != WebInputEventResult::NotHandled) | 2087 if (result != WebInputEventResult::NotHandled) |
2076 return result; | 2088 return result; |
2077 return WebInputEventResult::HandledSystem; | 2089 return WebInputEventResult::HandledSystem; |
2078 } | 2090 } |
2079 | 2091 |
2080 WebInputEventResult EventHandler::passMouseMoveEventToSubframe( | 2092 WebInputEventResult EventHandler::passMouseMoveEventToSubframe( |
2081 MouseEventWithHitTestResults& mev, | 2093 MouseEventWithHitTestResults& mev, |
| 2094 const Vector<PlatformMouseEvent>& coalescedEvents, |
2082 LocalFrame* subframe, | 2095 LocalFrame* subframe, |
2083 HitTestResult* hoveredNode) { | 2096 HitTestResult* hoveredNode) { |
2084 if (m_mouseEventManager->mouseDownMayStartDrag()) | 2097 if (m_mouseEventManager->mouseDownMayStartDrag()) |
2085 return WebInputEventResult::NotHandled; | 2098 return WebInputEventResult::NotHandled; |
2086 WebInputEventResult result = | 2099 WebInputEventResult result = |
2087 subframe->eventHandler().handleMouseMoveOrLeaveEvent(mev.event(), | 2100 subframe->eventHandler().handleMouseMoveOrLeaveEvent( |
2088 hoveredNode); | 2101 mev.event(), coalescedEvents, hoveredNode); |
2089 if (result != WebInputEventResult::NotHandled) | 2102 if (result != WebInputEventResult::NotHandled) |
2090 return result; | 2103 return result; |
2091 return WebInputEventResult::HandledSystem; | 2104 return WebInputEventResult::HandledSystem; |
2092 } | 2105 } |
2093 | 2106 |
2094 WebInputEventResult EventHandler::passMouseReleaseEventToSubframe( | 2107 WebInputEventResult EventHandler::passMouseReleaseEventToSubframe( |
2095 MouseEventWithHitTestResults& mev, | 2108 MouseEventWithHitTestResults& mev, |
2096 LocalFrame* subframe) { | 2109 LocalFrame* subframe) { |
2097 WebInputEventResult result = | 2110 WebInputEventResult result = |
2098 subframe->eventHandler().handleMouseReleaseEvent(mev.event()); | 2111 subframe->eventHandler().handleMouseReleaseEvent(mev.event()); |
2099 if (result != WebInputEventResult::NotHandled) | 2112 if (result != WebInputEventResult::NotHandled) |
2100 return result; | 2113 return result; |
2101 return WebInputEventResult::HandledSystem; | 2114 return WebInputEventResult::HandledSystem; |
2102 } | 2115 } |
2103 | 2116 |
2104 FrameHost* EventHandler::frameHost() const { | 2117 FrameHost* EventHandler::frameHost() const { |
2105 if (!m_frame->page()) | 2118 if (!m_frame->page()) |
2106 return nullptr; | 2119 return nullptr; |
2107 | 2120 |
2108 return &m_frame->page()->frameHost(); | 2121 return &m_frame->page()->frameHost(); |
2109 } | 2122 } |
2110 | 2123 |
2111 } // namespace blink | 2124 } // namespace blink |
OLD | NEW |