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

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

Powered by Google App Engine
This is Rietveld 408576698