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

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

Issue 1809603003: Separate mouse transition events from pointerevent (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add the missing test result Created 4 years, 9 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 reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 return scrollableArea; 1132 return scrollableArea;
1133 } 1133 }
1134 1134
1135 return nullptr; 1135 return nullptr;
1136 } 1136 }
1137 1137
1138 WebInputEventResult EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event) 1138 WebInputEventResult EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event)
1139 { 1139 {
1140 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); 1140 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent");
1141 1141
1142 m_pointerEventManager.conditionallyEnableMouseEventForPointerTypeMouse(
1143 event.getModifiers());
1144
1145 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); 1142 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
1146 1143
1147 HitTestResult hoveredNode = HitTestResult(); 1144 HitTestResult hoveredNode = HitTestResult();
1148 WebInputEventResult result = handleMouseMoveOrLeaveEvent(event, &hoveredNode ); 1145 WebInputEventResult result = handleMouseMoveOrLeaveEvent(event, &hoveredNode );
1149 1146
1150 Page* page = m_frame->page(); 1147 Page* page = m_frame->page();
1151 if (!page) 1148 if (!page)
1152 return result; 1149 return result;
1153 1150
1154 if (PaintLayer* layer = layerForNode(hoveredNode.innerNode())) { 1151 if (PaintLayer* layer = layerForNode(hoveredNode.innerNode())) {
1155 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer )) 1152 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer ))
1156 layerScrollableArea->mouseMovedInContentArea(); 1153 layerScrollableArea->mouseMovedInContentArea();
1157 } 1154 }
1158 1155
1159 if (FrameView* frameView = m_frame->view()) 1156 if (FrameView* frameView = m_frame->view())
1160 frameView->mouseMovedInContentArea(); 1157 frameView->mouseMovedInContentArea();
1161 1158
1162 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); 1159 hoveredNode.setToShadowHostIfInUserAgentShadowRoot();
1163 page->chromeClient().mouseDidMoveOverElement(hoveredNode); 1160 page->chromeClient().mouseDidMoveOverElement(hoveredNode);
1164 1161
1165 return result; 1162 return result;
1166 } 1163 }
1167 1164
1168 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) 1165 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event)
1169 { 1166 {
1170 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); 1167 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent");
1171 1168
1172 m_pointerEventManager.conditionallyEnableMouseEventForPointerTypeMouse(
1173 event.getModifiers());
1174
1175 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); 1169 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
1176 handleMouseMoveOrLeaveEvent(event, 0, false, true); 1170 handleMouseMoveOrLeaveEvent(event, 0, false, true);
1177 } 1171 }
1178 1172
1179 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMous eEvent& mouseEvent, HitTestResult* hoveredNode, bool onlyUpdateScrollbars, bool forceLeave) 1173 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMous eEvent& mouseEvent, HitTestResult* hoveredNode, bool onlyUpdateScrollbars, bool forceLeave)
1180 { 1174 {
1181 ASSERT(m_frame); 1175 ASSERT(m_frame);
1182 ASSERT(m_frame->view()); 1176 ASSERT(m_frame->view());
1183 1177
1184 setLastKnownMousePosition(mouseEvent); 1178 setLastKnownMousePosition(mouseEvent);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 1243
1250 WebInputEventResult eventResult = WebInputEventResult::NotHandled; 1244 WebInputEventResult eventResult = WebInputEventResult::NotHandled;
1251 RefPtrWillBeRawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get( ) ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTest Result(mev); 1245 RefPtrWillBeRawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get( ) ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTest Result(mev);
1252 1246
1253 // We want mouseouts to happen first, from the inside out. First send a mov e event to the last subframe so that it will fire mouseouts. 1247 // We want mouseouts to happen first, from the inside out. First send a mov e event to the last subframe so that it will fire mouseouts.
1254 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe) 1248 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe)
1255 m_lastMouseMoveEventSubframe->eventHandler().handleMouseLeaveEvent(mev.e vent()); 1249 m_lastMouseMoveEventSubframe->eventHandler().handleMouseLeaveEvent(mev.e vent());
1256 1250
1257 if (newSubframe) { 1251 if (newSubframe) {
1258 // Update over/out state before passing the event to the subframe. 1252 // Update over/out state before passing the event to the subframe.
1259 updateMouseEventTargetNode(mev.innerNode(), mev.event()); 1253 updateMouseEventTargetNodeAndSendEvents(mev.innerNode(), mev.event(), tr ue);
1260 1254
1261 // Event dispatch in updateMouseEventTargetNode may have caused the subf rame of the target 1255 // Event dispatch in updateMouseEventTargetNodeAndSendEvents may have ca used the subframe of the target
1262 // node to be detached from its FrameView, in which case the event shoul d not be passed. 1256 // node to be detached from its FrameView, in which case the event shoul d not be passed.
1263 if (newSubframe->view()) 1257 if (newSubframe->view())
1264 eventResult = passMouseMoveEventToSubframe(mev, newSubframe.get(), h overedNode); 1258 eventResult = passMouseMoveEventToSubframe(mev, newSubframe.get(), h overedNode);
1265 } else { 1259 } else {
1266 if (scrollbar && !m_mousePressed) 1260 if (scrollbar && !m_mousePressed)
1267 scrollbar->mouseMoved(mev.event()); // Handle hover effects on platf orms that support visual feedback on scrollbar hovering. 1261 scrollbar->mouseMoved(mev.event()); // Handle hover effects on platf orms that support visual feedback on scrollbar hovering.
1268 if (FrameView* view = m_frame->view()) { 1262 if (FrameView* view = m_frame->view()) {
1269 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); 1263 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult());
1270 if (optionalCursor.isCursorChange()) { 1264 if (optionalCursor.isCursorChange()) {
1271 view->setCursor(optionalCursor.cursor()); 1265 view->setCursor(optionalCursor.cursor());
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 HitTestRequest request(hitType); 1340 HitTestRequest request(hitType);
1347 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseEvent); 1341 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseEvent);
1348 LocalFrame* subframe = m_capturingMouseEventsNode.get() ? subframeForTargetN ode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); 1342 LocalFrame* subframe = m_capturingMouseEventsNode.get() ? subframeForTargetN ode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev);
1349 if (m_eventHandlerWillResetCapturingMouseEventsNode) 1343 if (m_eventHandlerWillResetCapturingMouseEventsNode)
1350 m_capturingMouseEventsNode = nullptr; 1344 m_capturingMouseEventsNode = nullptr;
1351 if (subframe) 1345 if (subframe)
1352 return passMouseReleaseEventToSubframe(mev, subframe); 1346 return passMouseReleaseEventToSubframe(mev, subframe);
1353 1347
1354 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents(Event TypeNames::mouseup, mev.innerNode(), m_clickCount, mev.event()); 1348 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents(Event TypeNames::mouseup, mev.innerNode(), m_clickCount, mev.event());
1355 1349
1356 // TODO(crbug/545647): This state should reset with pointercancel too.
1357 m_pointerEventManager.conditionallyEnableMouseEventForPointerTypeMouse(
1358 mouseEvent.getModifiers());
1359
1360 bool contextMenuEvent = mouseEvent.button() == RightButton; 1350 bool contextMenuEvent = mouseEvent.button() == RightButton;
1361 #if OS(MACOSX) 1351 #if OS(MACOSX)
1362 // FIXME: The Mac port achieves the same behavior by checking whether the co ntext menu is currently open in WebPage::mouseEvent(). Consider merging the impl ementations. 1352 // FIXME: The Mac port achieves the same behavior by checking whether the co ntext menu is currently open in WebPage::mouseEvent(). Consider merging the impl ementations.
1363 if (mouseEvent.button() == LeftButton && mouseEvent.getModifiers() & Platfor mEvent::CtrlKey) 1353 if (mouseEvent.button() == LeftButton && mouseEvent.getModifiers() & Platfor mEvent::CtrlKey)
1364 contextMenuEvent = true; 1354 contextMenuEvent = true;
1365 #endif 1355 #endif
1366 1356
1367 WebInputEventResult clickEventResult = WebInputEventResult::NotHandled; 1357 WebInputEventResult clickEventResult = WebInputEventResult::NotHandled;
1368 if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode && mev.innerNode()->canParticipateInFlatTree() && m_clickNode->canParticipateInF latTree()) { 1358 if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode && mev.innerNode()->canParticipateInFlatTree() && m_clickNode->canParticipateInF latTree()) {
1369 // Updates distribution because a 'mouseup' event listener can make the 1359 // Updates distribution because a 'mouseup' event listener can make the
1370 // tree dirty at dispatchMouseEvent() invocation above. 1360 // tree dirty at dispatchMouseEvent() invocation above.
1371 // Unless distribution is updated, commonAncestor would hit ASSERT. 1361 // Unless distribution is updated, commonAncestor would hit ASSERT.
1372 // Both m_clickNode and mev.innerNode() don't need to be updated 1362 // Both m_clickNode and mev.innerNode() don't need to be updated
1373 // because commonAncestor() will exit early if their documents are diffe rent. 1363 // because commonAncestor() will exit early if their documents are diffe rent.
1374 m_clickNode->updateDistribution(); 1364 m_clickNode->updateDistribution();
1375 if (Node* clickTargetNode = mev.innerNode()->commonAncestor( 1365 if (Node* clickTargetNode = mev.innerNode()->commonAncestor(
1376 *m_clickNode, parentForClickEvent)) { 1366 *m_clickNode, parentForClickEvent)) {
1377 1367
1378 // Dispatch mouseup directly w/o calling updateMouseEventTargetNode 1368 // Dispatch mouseup directly w/o calling updateMouseEventTargetNodeA ndSendEvents
1379 // because the mouseup dispatch above has already updated it 1369 // because the mouseup dispatch above has already updated it
1380 // correctly. Moreover, clickTargetNode is different from 1370 // correctly. Moreover, clickTargetNode is different from
1381 // mev.innerNode at drag-release. 1371 // mev.innerNode at drag-release.
1382 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchMo useEvent(mev.event(), 1372 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchMo useEvent(mev.event(),
1383 EventTypeNames::click, m_clickCount)); 1373 EventTypeNames::click, m_clickCount));
1384 } 1374 }
1385 } 1375 }
1386 1376
1387 if (m_resizeScrollableArea) { 1377 if (m_resizeScrollableArea) {
1388 m_resizeScrollableArea->setInResizeMode(false); 1378 m_resizeScrollableArea->setInResizeMode(false);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 } 1573 }
1584 1574
1585 MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques t& request, const PlatformMouseEvent& mev) 1575 MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques t& request, const PlatformMouseEvent& mev)
1586 { 1576 {
1587 ASSERT(m_frame); 1577 ASSERT(m_frame);
1588 ASSERT(m_frame->document()); 1578 ASSERT(m_frame->document());
1589 1579
1590 return m_frame->document()->prepareMouseEvent(request, contentPointFromRootF rame(m_frame, mev.position()), mev); 1580 return m_frame->document()->prepareMouseEvent(request, contentPointFromRootF rame(m_frame, mev.position()), mev);
1591 } 1581 }
1592 1582
1593 void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo useEvent& mouseEvent) 1583 PassRefPtrWillBeRawPtr<Node> EventHandler::updateMouseEventTargetNode(Node* targ etNode,
1584 const PlatformMouseEvent& mouseEvent)
1594 { 1585 {
1595 Node* result = targetNode; 1586 Node* result = targetNode;
1596 1587
1597 // If we're capturing, we always go right to that node. 1588 // If we're capturing, we always go right to that node.
1598 if (m_capturingMouseEventsNode) { 1589 if (m_capturingMouseEventsNode) {
1599 result = m_capturingMouseEventsNode.get(); 1590 result = m_capturingMouseEventsNode.get();
1600 } else { 1591 } else {
1601 // If the target node is a text node, dispatch on the parent node - rdar ://4196646 1592 // If the target node is a text node, dispatch on the parent node - rdar ://4196646
1602 if (result && result->isTextNode()) 1593 if (result && result->isTextNode())
1603 result = FlatTreeTraversal::parent(*result); 1594 result = FlatTreeTraversal::parent(*result);
(...skipping 27 matching lines...) Expand all
1631 // The mouse has moved between layers. 1622 // The mouse has moved between layers.
1632 if (ScrollableArea* scrollableAreaForNodeUnderMouse = associatedScrollab leArea(layerForNodeUnderMouse)) 1623 if (ScrollableArea* scrollableAreaForNodeUnderMouse = associatedScrollab leArea(layerForNodeUnderMouse))
1633 scrollableAreaForNodeUnderMouse->mouseEnteredContentArea(); 1624 scrollableAreaForNodeUnderMouse->mouseEnteredContentArea();
1634 } 1625 }
1635 1626
1636 if (lastNodeUnderMouse && lastNodeUnderMouse->document() != m_frame->documen t()) { 1627 if (lastNodeUnderMouse && lastNodeUnderMouse->document() != m_frame->documen t()) {
1637 lastNodeUnderMouse = nullptr; 1628 lastNodeUnderMouse = nullptr;
1638 m_lastScrollbarUnderMouse = nullptr; 1629 m_lastScrollbarUnderMouse = nullptr;
1639 } 1630 }
1640 1631
1632 return lastNodeUnderMouse;
1633 }
1634
1635 void EventHandler::updateMouseEventTargetNodeAndSendEvents(Node* targetNode,
1636 const PlatformMouseEvent& mouseEvent, bool isFrameBoundaryTransition)
1637 {
1638 RefPtrWillBeRawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(tar getNode, mouseEvent);
1641 m_pointerEventManager.sendNodeTransitionEvents(lastNodeUnderMouse, 1639 m_pointerEventManager.sendNodeTransitionEvents(lastNodeUnderMouse,
1642 m_nodeUnderMouse, mouseEvent, m_frame->document()->domWindow()); 1640 m_nodeUnderMouse, mouseEvent, m_frame->document()->domWindow(),
1641 isFrameBoundaryTransition);
1643 } 1642 }
1644 1643
1645 WebInputEventResult EventHandler::dispatchMouseEvent(const AtomicString& eventTy pe, Node* targetNode, int clickCount, const PlatformMouseEvent& mouseEvent) 1644 WebInputEventResult EventHandler::dispatchMouseEvent(const AtomicString& eventTy pe, Node* targetNode, int clickCount, const PlatformMouseEvent& mouseEvent)
1646 { 1645 {
1647 updateMouseEventTargetNode(targetNode, mouseEvent); 1646 updateMouseEventTargetNodeAndSendEvents(targetNode, mouseEvent);
1648 if (!m_nodeUnderMouse) 1647 if (!m_nodeUnderMouse)
1649 return WebInputEventResult::NotHandled; 1648 return WebInputEventResult::NotHandled;
1650 1649
1651 RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeU nderMouse->document().domWindow(), mouseEvent, clickCount, nullptr); 1650 RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeU nderMouse->document().domWindow(), mouseEvent, clickCount, nullptr);
1652 return toWebInputEventResult(m_nodeUnderMouse->dispatchEvent(event)); 1651 return toWebInputEventResult(m_nodeUnderMouse->dispatchEvent(event));
1653 } 1652 }
1654 1653
1655 bool EventHandler::isPointerEventActive(int pointerId) 1654 bool EventHandler::isPointerEventActive(int pointerId)
1656 { 1655 {
1657 return m_pointerEventManager.isActive(pointerId); 1656 return m_pointerEventManager.isActive(pointerId);
(...skipping 15 matching lines...) Expand all
1673 m_pointerEventManager.elementRemoved(target); 1672 m_pointerEventManager.elementRemoved(target);
1674 } 1673 }
1675 1674
1676 // TODO(mustaq): Make PE drive ME dispatch & bookkeeping in EventHandler. 1675 // TODO(mustaq): Make PE drive ME dispatch & bookkeeping in EventHandler.
1677 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(const Ato micString& mouseEventType, Node* targetNode, int clickCount, const PlatformMouse Event& mouseEvent) 1676 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(const Ato micString& mouseEventType, Node* targetNode, int clickCount, const PlatformMouse Event& mouseEvent)
1678 { 1677 {
1679 ASSERT(mouseEventType == EventTypeNames::mousedown 1678 ASSERT(mouseEventType == EventTypeNames::mousedown
1680 || mouseEventType == EventTypeNames::mousemove 1679 || mouseEventType == EventTypeNames::mousemove
1681 || mouseEventType == EventTypeNames::mouseup); 1680 || mouseEventType == EventTypeNames::mouseup);
1682 1681
1683 updateMouseEventTargetNode(targetNode, mouseEvent); 1682 RefPtrWillBeRawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(tar getNode, mouseEvent);
1684 if (!m_nodeUnderMouse)
1685 return WebInputEventResult::NotHandled;
1686 1683
1687 return m_pointerEventManager.sendMousePointerEvent( 1684 return m_pointerEventManager.sendMousePointerEvent(
1688 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr, 1685 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr,
1689 m_frame->document()->domWindow()); 1686 m_frame->document()->domWindow(), lastNodeUnderMouse);
1690 } 1687 }
1691 1688
1692 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) 1689 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities)
1693 { 1690 {
1694 // If clicking on a frame scrollbar, do not mess up with content focus. 1691 // If clicking on a frame scrollbar, do not mess up with content focus.
1695 if (targetedEvent.hitTestResult().scrollbar() && m_frame->contentLayoutObjec t()) { 1692 if (targetedEvent.hitTestResult().scrollbar() && m_frame->contentLayoutObjec t()) {
1696 if (targetedEvent.hitTestResult().scrollbar()->getScrollableArea() == m_ frame->contentLayoutObject()->getScrollableArea()) 1693 if (targetedEvent.hitTestResult().scrollbar()->getScrollableArea() == m_ frame->contentLayoutObject()->getScrollableArea())
1697 return WebInputEventResult::NotHandled; 1694 return WebInputEventResult::NotHandled;
1698 } 1695 }
1699 1696
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
2634 unsigned modifiers = gestureEvent.getModifiers(); 2631 unsigned modifiers = gestureEvent.getModifiers();
2635 PlatformMouseEvent fakeMouseMove(gestureEvent.position(), gestureEvent.globa lPosition(), 2632 PlatformMouseEvent fakeMouseMove(gestureEvent.position(), gestureEvent.globa lPosition(),
2636 NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0, 2633 NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0,
2637 static_cast<PlatformEvent::Modifiers>(modifiers), 2634 static_cast<PlatformEvent::Modifiers>(modifiers),
2638 PlatformMouseEvent::FromTouch, gestureEvent.timestamp(), WebPointerPrope rties::PointerType::Mouse); 2635 PlatformMouseEvent::FromTouch, gestureEvent.timestamp(), WebPointerPrope rties::PointerType::Mouse);
2639 2636
2640 // Update the mouseout/mouseleave event 2637 // Update the mouseout/mouseleave event
2641 size_t indexExitedFrameChain = exitedFrameChain.size(); 2638 size_t indexExitedFrameChain = exitedFrameChain.size();
2642 while (indexExitedFrameChain) { 2639 while (indexExitedFrameChain) {
2643 LocalFrame* leaveFrame = exitedFrameChain[--indexExitedFrameChain]; 2640 LocalFrame* leaveFrame = exitedFrameChain[--indexExitedFrameChain];
2644 leaveFrame->eventHandler().updateMouseEventTargetNode(nullptr, fakeMouse Move); 2641 leaveFrame->eventHandler().updateMouseEventTargetNodeAndSendEvents(nullp tr, fakeMouseMove);
2645 } 2642 }
2646 2643
2647 // update the mouseover/mouseenter event 2644 // update the mouseover/mouseenter event
2648 while (indexEnteredFrameChain) { 2645 while (indexEnteredFrameChain) {
2649 Frame* parentFrame = enteredFrameChain[--indexEnteredFrameChain]->tree() .parent(); 2646 Frame* parentFrame = enteredFrameChain[--indexEnteredFrameChain]->tree() .parent();
2650 if (parentFrame && parentFrame->isLocalFrame()) 2647 if (parentFrame && parentFrame->isLocalFrame())
2651 toLocalFrame(parentFrame)->eventHandler().updateMouseEventTargetNode (toHTMLFrameOwnerElement(enteredFrameChain[indexEnteredFrameChain]->owner()), fa keMouseMove); 2648 toLocalFrame(parentFrame)->eventHandler().updateMouseEventTargetNode AndSendEvents(toHTMLFrameOwnerElement(enteredFrameChain[indexEnteredFrameChain]- >owner()), fakeMouseMove);
2652 } 2649 }
2653 } 2650 }
2654 2651
2655 GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGe stureEvent& gestureEvent, bool readOnly) 2652 GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGe stureEvent& gestureEvent, bool readOnly)
2656 { 2653 {
2657 TRACE_EVENT0("input", "EventHandler::targetGestureEvent"); 2654 TRACE_EVENT0("input", "EventHandler::targetGestureEvent");
2658 2655
2659 ASSERT(m_frame == m_frame->localFrameRoot()); 2656 ASSERT(m_frame == m_frame->localFrameRoot());
2660 // Scrolling events get hit tested per frame (like wheel events do). 2657 // Scrolling events get hit tested per frame (like wheel events do).
2661 ASSERT(!gestureEvent.isScrollEvent()); 2658 ASSERT(!gestureEvent.isScrollEvent());
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
3969 PlatformEvent::Modifiers EventHandler::accessKeyModifiers() 3966 PlatformEvent::Modifiers EventHandler::accessKeyModifiers()
3970 { 3967 {
3971 #if OS(MACOSX) 3968 #if OS(MACOSX)
3972 return static_cast<PlatformEvent::Modifiers>(PlatformEvent::CtrlKey | Platfo rmEvent::AltKey); 3969 return static_cast<PlatformEvent::Modifiers>(PlatformEvent::CtrlKey | Platfo rmEvent::AltKey);
3973 #else 3970 #else
3974 return PlatformEvent::AltKey; 3971 return PlatformEvent::AltKey;
3975 #endif 3972 #endif
3976 } 3973 }
3977 3974
3978 } // namespace blink 3975 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698