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

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

Issue 2510133002: Add getCoalescedEvents API to PointerEvent (Closed)
Patch Set: rebase Created 4 years 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 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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