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

Side by Side Diff: Source/core/page/EventHandler.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase past r181764 Created 6 years, 3 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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 ASSERT(!m_fakeMouseMoveEventTimer.isActive()); 237 ASSERT(!m_fakeMouseMoveEventTimer.isActive());
238 } 238 }
239 239
240 void EventHandler::trace(Visitor* visitor) 240 void EventHandler::trace(Visitor* visitor)
241 { 241 {
242 #if ENABLE(OILPAN) 242 #if ENABLE(OILPAN)
243 visitor->trace(m_mousePressNode); 243 visitor->trace(m_mousePressNode);
244 visitor->trace(m_capturingMouseEventsNode); 244 visitor->trace(m_capturingMouseEventsNode);
245 visitor->trace(m_nodeUnderMouse); 245 visitor->trace(m_nodeUnderMouse);
246 visitor->trace(m_lastNodeUnderMouse); 246 visitor->trace(m_lastNodeUnderMouse);
247 visitor->trace(m_lastMouseMoveEventSubframe);
247 visitor->trace(m_clickNode); 248 visitor->trace(m_clickNode);
248 visitor->trace(m_dragTarget); 249 visitor->trace(m_dragTarget);
249 visitor->trace(m_frameSetBeingResized); 250 visitor->trace(m_frameSetBeingResized);
250 visitor->trace(m_latchedWheelEventNode); 251 visitor->trace(m_latchedWheelEventNode);
251 visitor->trace(m_previousWheelScrolledNode); 252 visitor->trace(m_previousWheelScrolledNode);
252 visitor->trace(m_targetForTouchID); 253 visitor->trace(m_targetForTouchID);
253 visitor->trace(m_touchSequenceDocument); 254 visitor->trace(m_touchSequenceDocument);
254 visitor->trace(m_scrollGestureHandlingNode); 255 visitor->trace(m_scrollGestureHandlingNode);
255 visitor->trace(m_previousGestureScrolledNode); 256 visitor->trace(m_previousGestureScrolledNode);
256 visitor->trace(m_lastDeferredTapElement); 257 visitor->trace(m_lastDeferredTapElement);
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent. position()); 1236 LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent. position());
1236 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(re quest, documentPoint, mouseEvent); 1237 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(re quest, documentPoint, mouseEvent);
1237 1238
1238 if (!mev.targetNode()) { 1239 if (!mev.targetNode()) {
1239 invalidateClick(); 1240 invalidateClick();
1240 return false; 1241 return false;
1241 } 1242 }
1242 1243
1243 m_mousePressNode = mev.targetNode(); 1244 m_mousePressNode = mev.targetNode();
1244 1245
1245 RefPtr<LocalFrame> subframe = subframeForHitTestResult(mev); 1246 RefPtrWillBeRawPtr<LocalFrame> subframe = subframeForHitTestResult(mev);
1246 if (subframe && passMousePressEventToSubframe(mev, subframe.get())) { 1247 if (subframe && passMousePressEventToSubframe(mev, subframe.get())) {
1247 // Start capturing future events for this frame. We only do this if we didn't clear 1248 // Start capturing future events for this frame. We only do this if we didn't clear
1248 // the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop. 1249 // the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop.
1249 m_capturesDragging = subframe->eventHandler().capturesDragging(); 1250 m_capturesDragging = subframe->eventHandler().capturesDragging();
1250 if (m_mousePressed && m_capturesDragging) { 1251 if (m_mousePressed && m_capturesDragging) {
1251 m_capturingMouseEventsNode = mev.targetNode(); 1252 m_capturingMouseEventsNode = mev.targetNode();
1252 m_eventHandlerWillResetCapturingMouseEventsNode = true; 1253 m_eventHandlerWillResetCapturingMouseEventsNode = true;
1253 } 1254 }
1254 invalidateClick(); 1255 invalidateClick();
1255 return true; 1256 return true;
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1440 1441
1441 if (!scrollbar) 1442 if (!scrollbar)
1442 scrollbar = mev.scrollbar(); 1443 scrollbar = mev.scrollbar();
1443 1444
1444 updateLastScrollbarUnderMouse(scrollbar, !m_mousePressed); 1445 updateLastScrollbarUnderMouse(scrollbar, !m_mousePressed);
1445 if (onlyUpdateScrollbars) 1446 if (onlyUpdateScrollbars)
1446 return true; 1447 return true;
1447 } 1448 }
1448 1449
1449 bool swallowEvent = false; 1450 bool swallowEvent = false;
1450 RefPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get() ? subframe ForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); 1451 RefPtrWillBeRawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get( ) ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTest Result(mev);
1451 1452
1452 // 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. 1453 // 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.
1453 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe) 1454 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe)
1454 passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get()); 1455 passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get());
1455 1456
1456 if (newSubframe) { 1457 if (newSubframe) {
1457 // Update over/out state before passing the event to the subframe. 1458 // Update over/out state before passing the event to the subframe.
1458 updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true); 1459 updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true);
1459 1460
1460 // Event dispatch in updateMouseEventTargetNode may have caused the subf rame of the target 1461 // Event dispatch in updateMouseEventTargetNode may have caused the subf rame of the target
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
2076 if (gestureEvent.isScrollEvent()) 2077 if (gestureEvent.isScrollEvent())
2077 return handleGestureScrollEvent(gestureEvent); 2078 return handleGestureScrollEvent(gestureEvent);
2078 2079
2079 // Non-scrolling related gesture events instead do a single cross-frame hit- test and 2080 // Non-scrolling related gesture events instead do a single cross-frame hit- test and
2080 // jump directly to the inner most frame. This matches handleMousePressEvent etc. 2081 // jump directly to the inner most frame. This matches handleMousePressEvent etc.
2081 2082
2082 // Hit test across all frames and do touch adjustment as necessary for the e vent type. 2083 // Hit test across all frames and do touch adjustment as necessary for the e vent type.
2083 GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEve nt); 2084 GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEve nt);
2084 2085
2085 // Route to the correct frame. 2086 // Route to the correct frame.
2086 if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) 2087 if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) {
2087 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t); 2088 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t);
2089 }
2088 2090
2089 // No hit test result, handle in root instance. Perhaps we should just retur n false instead? 2091 // No hit test result, handle in root instance. Perhaps we should just retur n false instead?
2090 return handleGestureEventInFrame(targetedEvent); 2092 return handleGestureEventInFrame(targetedEvent);
2091 } 2093 }
2092 2094
2093 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent) 2095 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent)
2094 { 2096 {
2095 ASSERT(!targetedEvent.event().isScrollEvent()); 2097 ASSERT(!targetedEvent.event().isScrollEvent());
2096 2098
2097 RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().targetN ode(); 2099 RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().targetN ode();
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 return false; 2202 return false;
2201 default: 2203 default:
2202 ASSERT_NOT_REACHED(); 2204 ASSERT_NOT_REACHED();
2203 return false; 2205 return false;
2204 } 2206 }
2205 } 2207 }
2206 2208
2207 bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target edEvent) 2209 bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target edEvent)
2208 { 2210 {
2209 RefPtr<FrameView> protector(m_frame->view()); 2211 RefPtr<FrameView> protector(m_frame->view());
2212
2210 const PlatformGestureEvent& gestureEvent = targetedEvent.event(); 2213 const PlatformGestureEvent& gestureEvent = targetedEvent.event();
2211 2214
2212 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture); 2215 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
2213 2216
2214 unsigned modifierFlags = 0; 2217 unsigned modifierFlags = 0;
2215 if (gestureEvent.altKey()) 2218 if (gestureEvent.altKey())
2216 modifierFlags |= PlatformEvent::AltKey; 2219 modifierFlags |= PlatformEvent::AltKey;
2217 if (gestureEvent.ctrlKey()) 2220 if (gestureEvent.ctrlKey())
2218 modifierFlags |= PlatformEvent::CtrlKey; 2221 modifierFlags |= PlatformEvent::CtrlKey;
2219 if (gestureEvent.metaKey()) 2222 if (gestureEvent.metaKey())
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2293 2296
2294 PlatformMouseEvent mouseDragEvent(adjustedPoint, gestureEvent.globalPosi tion(), LeftButton, PlatformEvent::MouseMoved, 1, 2297 PlatformMouseEvent mouseDragEvent(adjustedPoint, gestureEvent.globalPosi tion(), LeftButton, PlatformEvent::MouseMoved, 1,
2295 gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey (), gestureEvent.metaKey(), PlatformMouseEvent::RealOrIndistinguishable, WTF::cu rrentTime()); 2298 gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey (), gestureEvent.metaKey(), PlatformMouseEvent::RealOrIndistinguishable, WTF::cu rrentTime());
2296 HitTestRequest request(HitTestRequest::ReadOnly); 2299 HitTestRequest request(HitTestRequest::ReadOnly);
2297 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseDragE vent); 2300 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseDragE vent);
2298 m_didStartDrag = false; 2301 m_didStartDrag = false;
2299 m_mouseDownMayStartDrag = true; 2302 m_mouseDownMayStartDrag = true;
2300 dragState().m_dragSrc = nullptr; 2303 dragState().m_dragSrc = nullptr;
2301 m_mouseDownPos = m_frame->view()->windowToContents(mouseDragEvent.positi on()); 2304 m_mouseDownPos = m_frame->view()->windowToContents(mouseDragEvent.positi on());
2302 RefPtr<FrameView> protector(m_frame->view()); 2305 RefPtr<FrameView> protector(m_frame->view());
2306
2303 handleDrag(mev, DontCheckDragHysteresis); 2307 handleDrag(mev, DontCheckDragHysteresis);
2304 if (m_didStartDrag) { 2308 if (m_didStartDrag) {
2305 m_longTapShouldInvokeContextMenu = true; 2309 m_longTapShouldInvokeContextMenu = true;
2306 return true; 2310 return true;
2307 } 2311 }
2308 } 2312 }
2309 #if OS(ANDROID) 2313 #if OS(ANDROID)
2310 bool shouldLongPressSelectWord = true; 2314 bool shouldLongPressSelectWord = true;
2311 #else 2315 #else
2312 bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()- >touchEditingEnabled(); 2316 bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()- >touchEditingEnabled();
(...skipping 1575 matching lines...) Expand 10 before | Expand all | Expand 10 after
3888 unsigned EventHandler::accessKeyModifiers() 3892 unsigned EventHandler::accessKeyModifiers()
3889 { 3893 {
3890 #if OS(MACOSX) 3894 #if OS(MACOSX)
3891 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; 3895 return PlatformEvent::CtrlKey | PlatformEvent::AltKey;
3892 #else 3896 #else
3893 return PlatformEvent::AltKey; 3897 return PlatformEvent::AltKey;
3894 #endif 3898 #endif
3895 } 3899 }
3896 3900
3897 } // namespace blink 3901 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698