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

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

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

Powered by Google App Engine
This is Rietveld 408576698