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

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

Powered by Google App Engine
This is Rietveld 408576698