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

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 r181245 conflict 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 #include "core/editing/htmlediting.h" 45 #include "core/editing/htmlediting.h"
46 #include "core/events/DOMWindowEventQueue.h" 46 #include "core/events/DOMWindowEventQueue.h"
47 #include "core/events/EventPath.h" 47 #include "core/events/EventPath.h"
48 #include "core/events/KeyboardEvent.h" 48 #include "core/events/KeyboardEvent.h"
49 #include "core/events/MouseEvent.h" 49 #include "core/events/MouseEvent.h"
50 #include "core/events/TextEvent.h" 50 #include "core/events/TextEvent.h"
51 #include "core/events/TouchEvent.h" 51 #include "core/events/TouchEvent.h"
52 #include "core/events/WheelEvent.h" 52 #include "core/events/WheelEvent.h"
53 #include "core/fetch/ImageResource.h" 53 #include "core/fetch/ImageResource.h"
54 #include "core/frame/EventHandlerRegistry.h" 54 #include "core/frame/EventHandlerRegistry.h"
55 #include "core/frame/FrameProtector.h"
55 #include "core/frame/FrameView.h" 56 #include "core/frame/FrameView.h"
56 #include "core/frame/LocalFrame.h" 57 #include "core/frame/LocalFrame.h"
57 #include "core/frame/Settings.h" 58 #include "core/frame/Settings.h"
58 #include "core/html/HTMLDialogElement.h" 59 #include "core/html/HTMLDialogElement.h"
59 #include "core/html/HTMLFrameElementBase.h" 60 #include "core/html/HTMLFrameElementBase.h"
60 #include "core/html/HTMLFrameSetElement.h" 61 #include "core/html/HTMLFrameSetElement.h"
61 #include "core/html/HTMLInputElement.h" 62 #include "core/html/HTMLInputElement.h"
62 #include "core/inspector/InspectorController.h" 63 #include "core/inspector/InspectorController.h"
63 #include "core/loader/FrameLoader.h" 64 #include "core/loader/FrameLoader.h"
64 #include "core/loader/FrameLoaderClient.h" 65 #include "core/loader/FrameLoaderClient.h"
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 ASSERT(!m_fakeMouseMoveEventTimer.isActive()); 237 ASSERT(!m_fakeMouseMoveEventTimer.isActive());
237 } 238 }
238 239
239 void EventHandler::trace(Visitor* visitor) 240 void EventHandler::trace(Visitor* visitor)
240 { 241 {
241 #if ENABLE(OILPAN) 242 #if ENABLE(OILPAN)
242 visitor->trace(m_mousePressNode); 243 visitor->trace(m_mousePressNode);
243 visitor->trace(m_capturingMouseEventsNode); 244 visitor->trace(m_capturingMouseEventsNode);
244 visitor->trace(m_nodeUnderMouse); 245 visitor->trace(m_nodeUnderMouse);
245 visitor->trace(m_lastNodeUnderMouse); 246 visitor->trace(m_lastNodeUnderMouse);
247 visitor->trace(m_lastMouseMoveEventSubframe);
246 visitor->trace(m_clickNode); 248 visitor->trace(m_clickNode);
247 visitor->trace(m_dragTarget); 249 visitor->trace(m_dragTarget);
248 visitor->trace(m_frameSetBeingResized); 250 visitor->trace(m_frameSetBeingResized);
249 visitor->trace(m_latchedWheelEventNode); 251 visitor->trace(m_latchedWheelEventNode);
250 visitor->trace(m_previousWheelScrolledNode); 252 visitor->trace(m_previousWheelScrolledNode);
251 visitor->trace(m_targetForTouchID); 253 visitor->trace(m_targetForTouchID);
252 visitor->trace(m_touchSequenceDocument); 254 visitor->trace(m_touchSequenceDocument);
253 visitor->trace(m_scrollGestureHandlingNode); 255 visitor->trace(m_scrollGestureHandlingNode);
254 visitor->trace(m_previousGestureScrolledNode); 256 visitor->trace(m_previousGestureScrolledNode);
255 visitor->trace(m_lastDeferredTapElement); 257 visitor->trace(m_lastDeferredTapElement);
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after
1195 FrameView* view = frame->view(); 1197 FrameView* view = frame->view();
1196 // FIXME: Is it really OK to use the wrong coordinates here when view is 0? 1198 // FIXME: Is it really OK to use the wrong coordinates here when view is 0?
1197 // Historically the code would just crash; this is clearly no worse than tha t. 1199 // Historically the code would just crash; this is clearly no worse than tha t.
1198 return view ? view->windowToContents(windowPoint) : windowPoint; 1200 return view ? view->windowToContents(windowPoint) : windowPoint;
1199 } 1201 }
1200 1202
1201 bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) 1203 bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
1202 { 1204 {
1203 TRACE_EVENT0("blink", "EventHandler::handleMousePressEvent"); 1205 TRACE_EVENT0("blink", "EventHandler::handleMousePressEvent");
1204 1206
1205 RefPtr<FrameView> protector(m_frame->view()); 1207 FrameViewProtector protector(m_frame->view());
1206 1208
1207 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture); 1209 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
1208 m_frame->localFrameRoot()->eventHandler().m_lastMouseDownUserGestureToken = gestureIndicator.currentToken(); 1210 m_frame->localFrameRoot()->eventHandler().m_lastMouseDownUserGestureToken = gestureIndicator.currentToken();
1209 1211
1210 cancelFakeMouseMoveEvent(); 1212 cancelFakeMouseMoveEvent();
1211 if (m_eventHandlerWillResetCapturingMouseEventsNode) 1213 if (m_eventHandlerWillResetCapturingMouseEventsNode)
1212 m_capturingMouseEventsNode = nullptr; 1214 m_capturingMouseEventsNode = nullptr;
1213 m_mousePressed = true; 1215 m_mousePressed = true;
1214 m_capturesDragging = true; 1216 m_capturesDragging = true;
1215 setLastKnownMousePosition(mouseEvent); 1217 setLastKnownMousePosition(mouseEvent);
(...skipping 18 matching lines...) Expand all
1234 LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent. position()); 1236 LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent. position());
1235 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(re quest, documentPoint, mouseEvent); 1237 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(re quest, documentPoint, mouseEvent);
1236 1238
1237 if (!mev.targetNode()) { 1239 if (!mev.targetNode()) {
1238 invalidateClick(); 1240 invalidateClick();
1239 return false; 1241 return false;
1240 } 1242 }
1241 1243
1242 m_mousePressNode = mev.targetNode(); 1244 m_mousePressNode = mev.targetNode();
1243 1245
1244 RefPtr<LocalFrame> subframe = subframeForHitTestResult(mev); 1246 LocalFrame* subframe = subframeForHitTestResult(mev);
1245 if (subframe && passMousePressEventToSubframe(mev, subframe.get())) { 1247 FrameProtector protect(subframe);
1248 if (subframe && passMousePressEventToSubframe(mev, subframe)) {
1246 // Start capturing future events for this frame. We only do this if we didn't clear 1249 // Start capturing future events for this frame. We only do this if we didn't clear
1247 // the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop. 1250 // the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop.
1248 m_capturesDragging = subframe->eventHandler().capturesDragging(); 1251 m_capturesDragging = subframe->eventHandler().capturesDragging();
1249 if (m_mousePressed && m_capturesDragging) { 1252 if (m_mousePressed && m_capturesDragging) {
1250 m_capturingMouseEventsNode = mev.targetNode(); 1253 m_capturingMouseEventsNode = mev.targetNode();
1251 m_eventHandlerWillResetCapturingMouseEventsNode = true; 1254 m_eventHandlerWillResetCapturingMouseEventsNode = true;
1252 } 1255 }
1253 invalidateClick(); 1256 invalidateClick();
1254 return true; 1257 return true;
1255 } 1258 }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1339 return scrollableArea; 1342 return scrollableArea;
1340 } 1343 }
1341 1344
1342 return 0; 1345 return 0;
1343 } 1346 }
1344 1347
1345 bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event) 1348 bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event)
1346 { 1349 {
1347 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); 1350 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent");
1348 1351
1349 RefPtr<FrameView> protector(m_frame->view()); 1352 FrameViewProtector protector(m_frame->view());
1350 MaximumDurationTracker maxDurationTracker(&m_maxMouseMovedDuration); 1353 MaximumDurationTracker maxDurationTracker(&m_maxMouseMovedDuration);
1351 1354
1352 HitTestResult hoveredNode = HitTestResult(LayoutPoint()); 1355 HitTestResult hoveredNode = HitTestResult(LayoutPoint());
1353 bool result = handleMouseMoveOrLeaveEvent(event, &hoveredNode); 1356 bool result = handleMouseMoveOrLeaveEvent(event, &hoveredNode);
1354 1357
1355 Page* page = m_frame->page(); 1358 Page* page = m_frame->page();
1356 if (!page) 1359 if (!page)
1357 return result; 1360 return result;
1358 1361
1359 if (RenderLayer* layer = layerForNode(hoveredNode.innerNode())) { 1362 if (RenderLayer* layer = layerForNode(hoveredNode.innerNode())) {
1360 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer )) 1363 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer ))
1361 layerScrollableArea->mouseMovedInContentArea(); 1364 layerScrollableArea->mouseMovedInContentArea();
1362 } 1365 }
1363 1366
1364 if (FrameView* frameView = m_frame->view()) 1367 if (FrameView* frameView = m_frame->view())
1365 frameView->mouseMovedInContentArea(); 1368 frameView->mouseMovedInContentArea();
1366 1369
1367 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); 1370 hoveredNode.setToShadowHostIfInUserAgentShadowRoot();
1368 page->chrome().mouseDidMoveOverElement(hoveredNode, event.modifierFlags()); 1371 page->chrome().mouseDidMoveOverElement(hoveredNode, event.modifierFlags());
1369 page->chrome().setToolTip(hoveredNode); 1372 page->chrome().setToolTip(hoveredNode);
1370 1373
1371 return result; 1374 return result;
1372 } 1375 }
1373 1376
1374 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) 1377 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event)
1375 { 1378 {
1376 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); 1379 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent");
1377 1380
1378 RefPtr<FrameView> protector(m_frame->view()); 1381 FrameViewProtector protector(m_frame->view());
1379 handleMouseMoveOrLeaveEvent(event); 1382 handleMouseMoveOrLeaveEvent(event);
1380 } 1383 }
1381 1384
1382 bool EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMouseEvent& mouseEv ent, HitTestResult* hoveredNode, bool onlyUpdateScrollbars) 1385 bool EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMouseEvent& mouseEv ent, HitTestResult* hoveredNode, bool onlyUpdateScrollbars)
1383 { 1386 {
1384 ASSERT(m_frame); 1387 ASSERT(m_frame);
1385 ASSERT(m_frame->view()); 1388 ASSERT(m_frame->view());
1386 1389
1387 setLastKnownMousePosition(mouseEvent); 1390 setLastKnownMousePosition(mouseEvent);
1388 1391
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1439 1442
1440 if (!scrollbar) 1443 if (!scrollbar)
1441 scrollbar = mev.scrollbar(); 1444 scrollbar = mev.scrollbar();
1442 1445
1443 updateLastScrollbarUnderMouse(scrollbar, !m_mousePressed); 1446 updateLastScrollbarUnderMouse(scrollbar, !m_mousePressed);
1444 if (onlyUpdateScrollbars) 1447 if (onlyUpdateScrollbars)
1445 return true; 1448 return true;
1446 } 1449 }
1447 1450
1448 bool swallowEvent = false; 1451 bool swallowEvent = false;
1449 RefPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get() ? subframe ForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); 1452 LocalFrame* newSubframe = m_capturingMouseEventsNode.get() ? subframeForTarg etNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev);
1453 FrameProtector protect(newSubframe);
1450 1454
1451 // 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.
1452 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)
1453 passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get()); 1457 passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get());
1454 1458
1455 if (newSubframe) { 1459 if (newSubframe) {
1456 // Update over/out state before passing the event to the subframe. 1460 // Update over/out state before passing the event to the subframe.
1457 updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true); 1461 updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true);
1458 1462
1459 // 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
1460 // node to be detached from its FrameView, in which case the event shoul d not be passed. 1464 // node to be detached from its FrameView, in which case the event shoul d not be passed.
1461 if (newSubframe->view()) 1465 if (newSubframe->view())
1462 swallowEvent |= passMouseMoveEventToSubframe(mev, newSubframe.get(), hoveredNode); 1466 swallowEvent |= passMouseMoveEventToSubframe(mev, newSubframe, hover edNode);
1463 } else { 1467 } else {
1464 if (scrollbar && !m_mousePressed) 1468 if (scrollbar && !m_mousePressed)
1465 scrollbar->mouseMoved(mouseEvent); // Handle hover effects on platfo rms that support visual feedback on scrollbar hovering. 1469 scrollbar->mouseMoved(mouseEvent); // Handle hover effects on platfo rms that support visual feedback on scrollbar hovering.
1466 if (FrameView* view = m_frame->view()) { 1470 if (FrameView* view = m_frame->view()) {
1467 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); 1471 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult());
1468 if (optionalCursor.isCursorChange()) { 1472 if (optionalCursor.isCursorChange()) {
1469 m_currentMouseCursor = optionalCursor.cursor(); 1473 m_currentMouseCursor = optionalCursor.cursor();
1470 view->setCursor(m_currentMouseCursor); 1474 view->setCursor(m_currentMouseCursor);
1471 } 1475 }
1472 } 1476 }
(...skipping 23 matching lines...) Expand all
1496 // controls. 1500 // controls.
1497 if (node.isHTMLElement() && toHTMLElement(node).isInteractiveContent()) 1501 if (node.isHTMLElement() && toHTMLElement(node).isInteractiveContent())
1498 return 0; 1502 return 0;
1499 return NodeRenderingTraversal::parent(&node); 1503 return NodeRenderingTraversal::parent(&node);
1500 } 1504 }
1501 1505
1502 bool EventHandler::handleMouseReleaseEvent(const PlatformMouseEvent& mouseEvent) 1506 bool EventHandler::handleMouseReleaseEvent(const PlatformMouseEvent& mouseEvent)
1503 { 1507 {
1504 TRACE_EVENT0("blink", "EventHandler::handleMouseReleaseEvent"); 1508 TRACE_EVENT0("blink", "EventHandler::handleMouseReleaseEvent");
1505 1509
1506 RefPtr<FrameView> protector(m_frame->view()); 1510 FrameViewProtector protector(m_frame->view());
1507 1511
1508 m_frame->selection().setCaretBlinkingSuspended(false); 1512 m_frame->selection().setCaretBlinkingSuspended(false);
1509 1513
1510 OwnPtr<UserGestureIndicator> gestureIndicator; 1514 OwnPtr<UserGestureIndicator> gestureIndicator;
1511 1515
1512 if (m_frame->localFrameRoot()->eventHandler().m_lastMouseDownUserGestureToke n) 1516 if (m_frame->localFrameRoot()->eventHandler().m_lastMouseDownUserGestureToke n)
1513 gestureIndicator = adoptPtr(new UserGestureIndicator(m_frame->localFrame Root()->eventHandler().m_lastMouseDownUserGestureToken.release())); 1517 gestureIndicator = adoptPtr(new UserGestureIndicator(m_frame->localFrame Root()->eventHandler().m_lastMouseDownUserGestureToken.release()));
1514 else 1518 else
1515 gestureIndicator = adoptPtr(new UserGestureIndicator(DefinitelyProcessin gUserGesture)); 1519 gestureIndicator = adoptPtr(new UserGestureIndicator(DefinitelyProcessin gUserGesture));
1516 1520
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
1950 { \ 1954 { \
1951 setFrameWasScrolledByUser(); \ 1955 setFrameWasScrolledByUser(); \
1952 return true; \ 1956 return true; \
1953 } 1957 }
1954 1958
1955 Document* doc = m_frame->document(); 1959 Document* doc = m_frame->document();
1956 1960
1957 if (!doc->renderView()) 1961 if (!doc->renderView())
1958 return false; 1962 return false;
1959 1963
1960 RefPtr<FrameView> protector(m_frame->view()); 1964 FrameViewProtector protector(m_frame->view());
1961 1965
1962 FrameView* view = m_frame->view(); 1966 FrameView* view = m_frame->view();
1963 if (!view) 1967 if (!view)
1964 return false; 1968 return false;
1965 1969
1966 LayoutPoint vPoint = view->windowToContents(event.position()); 1970 LayoutPoint vPoint = view->windowToContents(event.position());
1967 1971
1968 HitTestRequest request(HitTestRequest::ReadOnly); 1972 HitTestRequest request(HitTestRequest::ReadOnly);
1969 HitTestResult result(vPoint); 1973 HitTestResult result(vPoint);
1970 doc->renderView()->hitTest(request, result); 1974 doc->renderView()->hitTest(request, result);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
2075 if (gestureEvent.isScrollEvent()) 2079 if (gestureEvent.isScrollEvent())
2076 return handleGestureScrollEvent(gestureEvent); 2080 return handleGestureScrollEvent(gestureEvent);
2077 2081
2078 // 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
2079 // jump directly to the inner most frame. This matches handleMousePressEvent etc. 2083 // jump directly to the inner most frame. This matches handleMousePressEvent etc.
2080 2084
2081 // 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.
2082 GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEve nt); 2086 GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEve nt);
2083 2087
2084 // Route to the correct frame. 2088 // Route to the correct frame.
2085 if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) 2089 if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) {
2086 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t); 2090 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t);
2091 }
2087 2092
2088 // 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?
2089 return handleGestureEventInFrame(targetedEvent); 2094 return handleGestureEventInFrame(targetedEvent);
2090 } 2095 }
2091 2096
2092 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent) 2097 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent)
2093 { 2098 {
2094 ASSERT(!targetedEvent.event().isScrollEvent()); 2099 ASSERT(!targetedEvent.event().isScrollEvent());
2095 2100
2096 RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().targetN ode(); 2101 RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().targetN ode();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2198 case PlatformEvent::GesturePinchUpdate: 2203 case PlatformEvent::GesturePinchUpdate:
2199 return false; 2204 return false;
2200 default: 2205 default:
2201 ASSERT_NOT_REACHED(); 2206 ASSERT_NOT_REACHED();
2202 return false; 2207 return false;
2203 } 2208 }
2204 } 2209 }
2205 2210
2206 bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target edEvent) 2211 bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target edEvent)
2207 { 2212 {
2208 RefPtr<FrameView> protector(m_frame->view()); 2213 FrameViewProtector protector(m_frame->view());
2214
2209 const PlatformGestureEvent& gestureEvent = targetedEvent.event(); 2215 const PlatformGestureEvent& gestureEvent = targetedEvent.event();
2210 2216
2211 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture); 2217 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
2212 2218
2213 unsigned modifierFlags = 0; 2219 unsigned modifierFlags = 0;
2214 if (gestureEvent.altKey()) 2220 if (gestureEvent.altKey())
2215 modifierFlags |= PlatformEvent::AltKey; 2221 modifierFlags |= PlatformEvent::AltKey;
2216 if (gestureEvent.ctrlKey()) 2222 if (gestureEvent.ctrlKey())
2217 modifierFlags |= PlatformEvent::CtrlKey; 2223 modifierFlags |= PlatformEvent::CtrlKey;
2218 if (gestureEvent.metaKey()) 2224 if (gestureEvent.metaKey())
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2291 m_mouseDown = mouseDownEvent; 2297 m_mouseDown = mouseDownEvent;
2292 2298
2293 PlatformMouseEvent mouseDragEvent(adjustedPoint, gestureEvent.globalPosi tion(), LeftButton, PlatformEvent::MouseMoved, 1, 2299 PlatformMouseEvent mouseDragEvent(adjustedPoint, gestureEvent.globalPosi tion(), LeftButton, PlatformEvent::MouseMoved, 1,
2294 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());
2295 HitTestRequest request(HitTestRequest::ReadOnly); 2301 HitTestRequest request(HitTestRequest::ReadOnly);
2296 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseDragE vent); 2302 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseDragE vent);
2297 m_didStartDrag = false; 2303 m_didStartDrag = false;
2298 m_mouseDownMayStartDrag = true; 2304 m_mouseDownMayStartDrag = true;
2299 dragState().m_dragSrc = nullptr; 2305 dragState().m_dragSrc = nullptr;
2300 m_mouseDownPos = m_frame->view()->windowToContents(mouseDragEvent.positi on()); 2306 m_mouseDownPos = m_frame->view()->windowToContents(mouseDragEvent.positi on());
2301 RefPtr<FrameView> protector(m_frame->view()); 2307 FrameViewProtector protector(m_frame->view());
2308
2302 handleDrag(mev, DontCheckDragHysteresis); 2309 handleDrag(mev, DontCheckDragHysteresis);
2303 if (m_didStartDrag) { 2310 if (m_didStartDrag) {
2304 m_longTapShouldInvokeContextMenu = true; 2311 m_longTapShouldInvokeContextMenu = true;
2305 return true; 2312 return true;
2306 } 2313 }
2307 } 2314 }
2308 #if OS(ANDROID) 2315 #if OS(ANDROID)
2309 bool shouldLongPressSelectWord = true; 2316 bool shouldLongPressSelectWord = true;
2310 #else 2317 #else
2311 bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()- >touchEditingEnabled(); 2318 bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()- >touchEditingEnabled();
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 2432
2426 Node* node = m_scrollGestureHandlingNode.get(); 2433 Node* node = m_scrollGestureHandlingNode.get();
2427 if (!node) 2434 if (!node)
2428 return sendScrollEventToView(gestureEvent, delta); 2435 return sendScrollEventToView(gestureEvent, delta);
2429 2436
2430 // Ignore this event if the targeted node does not have a valid renderer. 2437 // Ignore this event if the targeted node does not have a valid renderer.
2431 RenderObject* renderer = node->renderer(); 2438 RenderObject* renderer = node->renderer();
2432 if (!renderer) 2439 if (!renderer)
2433 return false; 2440 return false;
2434 2441
2435 RefPtr<FrameView> protector(m_frame->view()); 2442 FrameViewProtector protector(m_frame->view());
2436 2443
2437 Node* stopNode = 0; 2444 Node* stopNode = 0;
2438 bool scrollShouldNotPropagate = gestureEvent.type() == PlatformEvent::Gestur eScrollUpdateWithoutPropagation; 2445 bool scrollShouldNotPropagate = gestureEvent.type() == PlatformEvent::Gestur eScrollUpdateWithoutPropagation;
2439 2446
2440 // Try to send the event to the correct view. 2447 // Try to send the event to the correct view.
2441 if (passScrollGestureEventToWidget(gestureEvent, renderer)) { 2448 if (passScrollGestureEventToWidget(gestureEvent, renderer)) {
2442 if(scrollShouldNotPropagate) 2449 if(scrollShouldNotPropagate)
2443 m_previousGestureScrolledNode = m_scrollGestureHandlingNode; 2450 m_previousGestureScrolledNode = m_scrollGestureHandlingNode;
2444 2451
2445 return true; 2452 return true;
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
2982 2989
2983 int keyCode = keyEvent.windowsVirtualKeyCode(); 2990 int keyCode = keyEvent.windowsVirtualKeyCode();
2984 return (keyCode >= VK_BACK && keyCode <= VK_CAPITAL) 2991 return (keyCode >= VK_BACK && keyCode <= VK_CAPITAL)
2985 || (keyCode >= VK_SPACE && keyCode <= VK_DELETE) 2992 || (keyCode >= VK_SPACE && keyCode <= VK_DELETE)
2986 || (keyCode >= VK_OEM_1 && keyCode <= VK_OEM_PLUS) 2993 || (keyCode >= VK_OEM_1 && keyCode <= VK_OEM_PLUS)
2987 || (keyCode >= VK_MULTIPLY && keyCode <= VK_OEM_8); 2994 || (keyCode >= VK_MULTIPLY && keyCode <= VK_OEM_8);
2988 } 2995 }
2989 2996
2990 bool EventHandler::keyEvent(const PlatformKeyboardEvent& initialKeyEvent) 2997 bool EventHandler::keyEvent(const PlatformKeyboardEvent& initialKeyEvent)
2991 { 2998 {
2992 RefPtr<FrameView> protector(m_frame->view()); 2999 FrameViewProtector protector(m_frame->view());
2993 3000
2994 ASSERT(m_frame->document()); 3001 ASSERT(m_frame->document());
2995 if (Fullscreen* fullscreen = Fullscreen::fromIfExists(*m_frame->document())) { 3002 if (Fullscreen* fullscreen = Fullscreen::fromIfExists(*m_frame->document())) {
2996 if (fullscreen->webkitCurrentFullScreenElement() && !isKeyEventAllowedIn FullScreen(fullscreen, initialKeyEvent)) { 3003 if (fullscreen->webkitCurrentFullScreenElement() && !isKeyEventAllowedIn FullScreen(fullscreen, initialKeyEvent)) {
2997 UseCounter::count(*m_frame->document(), UseCounter::KeyEventNotAllow edInFullScreen); 3004 UseCounter::count(*m_frame->document(), UseCounter::KeyEventNotAllow edInFullScreen);
2998 return false; 3005 return false;
2999 } 3006 }
3000 } 3007 }
3001 3008
3002 if (initialKeyEvent.windowsVirtualKeyCode() == VK_CAPITAL) 3009 if (initialKeyEvent.windowsVirtualKeyCode() == VK_CAPITAL)
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after
3881 unsigned EventHandler::accessKeyModifiers() 3888 unsigned EventHandler::accessKeyModifiers()
3882 { 3889 {
3883 #if OS(MACOSX) 3890 #if OS(MACOSX)
3884 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; 3891 return PlatformEvent::CtrlKey | PlatformEvent::AltKey;
3885 #else 3892 #else
3886 return PlatformEvent::AltKey; 3893 return PlatformEvent::AltKey;
3887 #endif 3894 #endif
3888 } 3895 }
3889 3896
3890 } // namespace blink 3897 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698