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

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

Issue 898783003: Move rendering/RenderLayer* to layout/ (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/page/EventHandler.h ('k') | Source/core/page/FocusController.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 #include "core/frame/FrameView.h" 55 #include "core/frame/FrameView.h"
56 #include "core/frame/LocalFrame.h" 56 #include "core/frame/LocalFrame.h"
57 #include "core/frame/Settings.h" 57 #include "core/frame/Settings.h"
58 #include "core/html/HTMLDialogElement.h" 58 #include "core/html/HTMLDialogElement.h"
59 #include "core/html/HTMLFrameElementBase.h" 59 #include "core/html/HTMLFrameElementBase.h"
60 #include "core/html/HTMLFrameSetElement.h" 60 #include "core/html/HTMLFrameSetElement.h"
61 #include "core/html/HTMLInputElement.h" 61 #include "core/html/HTMLInputElement.h"
62 #include "core/inspector/InspectorController.h" 62 #include "core/inspector/InspectorController.h"
63 #include "core/layout/HitTestRequest.h" 63 #include "core/layout/HitTestRequest.h"
64 #include "core/layout/HitTestResult.h" 64 #include "core/layout/HitTestResult.h"
65 #include "core/layout/Layer.h"
65 #include "core/loader/FrameLoader.h" 66 #include "core/loader/FrameLoader.h"
66 #include "core/loader/FrameLoaderClient.h" 67 #include "core/loader/FrameLoaderClient.h"
67 #include "core/page/AutoscrollController.h" 68 #include "core/page/AutoscrollController.h"
68 #include "core/page/Chrome.h" 69 #include "core/page/Chrome.h"
69 #include "core/page/ChromeClient.h" 70 #include "core/page/ChromeClient.h"
70 #include "core/page/DragController.h" 71 #include "core/page/DragController.h"
71 #include "core/page/DragState.h" 72 #include "core/page/DragState.h"
72 #include "core/page/EditorClient.h" 73 #include "core/page/EditorClient.h"
73 #include "core/page/FocusController.h" 74 #include "core/page/FocusController.h"
74 #include "core/page/FrameTree.h" 75 #include "core/page/FrameTree.h"
75 #include "core/page/Page.h" 76 #include "core/page/Page.h"
76 #include "core/page/SpatialNavigation.h" 77 #include "core/page/SpatialNavigation.h"
77 #include "core/page/TouchAdjustment.h" 78 #include "core/page/TouchAdjustment.h"
78 #include "core/rendering/RenderLayer.h"
79 #include "core/rendering/RenderPart.h" 79 #include "core/rendering/RenderPart.h"
80 #include "core/rendering/RenderTextControlSingleLine.h" 80 #include "core/rendering/RenderTextControlSingleLine.h"
81 #include "core/rendering/RenderView.h" 81 #include "core/rendering/RenderView.h"
82 #include "core/rendering/style/RenderStyle.h" 82 #include "core/rendering/style/RenderStyle.h"
83 #include "core/svg/SVGDocumentExtensions.h" 83 #include "core/svg/SVGDocumentExtensions.h"
84 #include "platform/PlatformGestureEvent.h" 84 #include "platform/PlatformGestureEvent.h"
85 #include "platform/PlatformKeyboardEvent.h" 85 #include "platform/PlatformKeyboardEvent.h"
86 #include "platform/PlatformTouchEvent.h" 86 #include "platform/PlatformTouchEvent.h"
87 #include "platform/PlatformWheelEvent.h" 87 #include "platform/PlatformWheelEvent.h"
88 #include "platform/RuntimeEnabledFeatures.h" 88 #include "platform/RuntimeEnabledFeatures.h"
(...skipping 1103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 OptionalCursor EventHandler::selectAutoCursor(const HitTestResult& result, Node* node, const Cursor& iBeam) 1192 OptionalCursor EventHandler::selectAutoCursor(const HitTestResult& result, Node* node, const Cursor& iBeam)
1193 { 1193 {
1194 bool editable = (node && node->hasEditableStyle()); 1194 bool editable = (node && node->hasEditableStyle());
1195 1195
1196 if (useHandCursor(node, result.isOverLink())) 1196 if (useHandCursor(node, result.isOverLink()))
1197 return handCursor(); 1197 return handCursor();
1198 1198
1199 bool inResizer = false; 1199 bool inResizer = false;
1200 RenderObject* renderer = node ? node->renderer() : nullptr; 1200 RenderObject* renderer = node ? node->renderer() : nullptr;
1201 if (renderer && m_frame->view()) { 1201 if (renderer && m_frame->view()) {
1202 RenderLayer* layer = renderer->enclosingLayer(); 1202 Layer* layer = renderer->enclosingLayer();
1203 inResizer = layer->scrollableArea() && layer->scrollableArea()->isPointI nResizeControl(result.roundedPointInMainFrame(), ResizerForPointer); 1203 inResizer = layer->scrollableArea() && layer->scrollableArea()->isPointI nResizeControl(result.roundedPointInMainFrame(), ResizerForPointer);
1204 } 1204 }
1205 1205
1206 // During selection, use an I-beam no matter what we're over. 1206 // During selection, use an I-beam no matter what we're over.
1207 // If a drag may be starting or we're capturing mouse events for a particula r node, don't treat this as a selection. 1207 // If a drag may be starting or we're capturing mouse events for a particula r node, don't treat this as a selection.
1208 if (m_mousePressed && m_mouseDownMayStartSelect 1208 if (m_mousePressed && m_mouseDownMayStartSelect
1209 && !m_mouseDownMayStartDrag 1209 && !m_mouseDownMayStartDrag
1210 && m_frame->selection().isCaretOrRange() 1210 && m_frame->selection().isCaretOrRange()
1211 && !m_capturingMouseEventsNode) { 1211 && !m_capturingMouseEventsNode) {
1212 return iBeam; 1212 return iBeam;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 // away from the current page (e.g. the click was on a hyperlink). See < rdar://problem/6095023>. 1287 // away from the current page (e.g. the click was on a hyperlink). See < rdar://problem/6095023>.
1288 invalidateClick(); 1288 invalidateClick();
1289 return true; 1289 return true;
1290 } 1290 }
1291 #endif 1291 #endif
1292 1292
1293 m_clickCount = mouseEvent.clickCount(); 1293 m_clickCount = mouseEvent.clickCount();
1294 m_clickNode = mev.innerNode()->isTextNode() ? NodeRenderingTraversal::paren t(*mev.innerNode()) : mev.innerNode(); 1294 m_clickNode = mev.innerNode()->isTextNode() ? NodeRenderingTraversal::paren t(*mev.innerNode()) : mev.innerNode();
1295 1295
1296 if (FrameView* view = m_frame->view()) { 1296 if (FrameView* view = m_frame->view()) {
1297 RenderLayer* layer = mev.innerNode()->renderer() ? mev.innerNode()->rend erer()->enclosingLayer() : nullptr; 1297 Layer* layer = mev.innerNode()->renderer() ? mev.innerNode()->renderer() ->enclosingLayer() : nullptr;
1298 IntPoint p = view->windowToContents(mouseEvent.position()); 1298 IntPoint p = view->windowToContents(mouseEvent.position());
1299 if (layer && layer->scrollableArea() && layer->scrollableArea()->isPoint InResizeControl(p, ResizerForPointer)) { 1299 if (layer && layer->scrollableArea() && layer->scrollableArea()->isPoint InResizeControl(p, ResizerForPointer)) {
1300 m_resizeScrollableArea = layer->scrollableArea(); 1300 m_resizeScrollableArea = layer->scrollableArea();
1301 m_resizeScrollableArea->setInResizeMode(true); 1301 m_resizeScrollableArea->setInResizeMode(true);
1302 m_offsetFromResizeCorner = LayoutSize(m_resizeScrollableArea->offset FromResizeCorner(p)); 1302 m_offsetFromResizeCorner = LayoutSize(m_resizeScrollableArea->offset FromResizeCorner(p));
1303 invalidateClick(); 1303 invalidateClick();
1304 return true; 1304 return true;
1305 } 1305 }
1306 } 1306 }
1307 1307
(...skipping 29 matching lines...) Expand all
1337 1337
1338 if (passMousePressEventToScrollbar(mev)) 1338 if (passMousePressEventToScrollbar(mev))
1339 swallowEvent = true; 1339 swallowEvent = true;
1340 else 1340 else
1341 swallowEvent = handleMousePressEvent(mev); 1341 swallowEvent = handleMousePressEvent(mev);
1342 } 1342 }
1343 1343
1344 return swallowEvent; 1344 return swallowEvent;
1345 } 1345 }
1346 1346
1347 static RenderLayer* layerForNode(Node* node) 1347 static Layer* layerForNode(Node* node)
1348 { 1348 {
1349 if (!node) 1349 if (!node)
1350 return nullptr; 1350 return nullptr;
1351 1351
1352 RenderObject* renderer = node->renderer(); 1352 RenderObject* renderer = node->renderer();
1353 if (!renderer) 1353 if (!renderer)
1354 return nullptr; 1354 return nullptr;
1355 1355
1356 RenderLayer* layer = renderer->enclosingLayer(); 1356 Layer* layer = renderer->enclosingLayer();
1357 if (!layer) 1357 if (!layer)
1358 return nullptr; 1358 return nullptr;
1359 1359
1360 return layer; 1360 return layer;
1361 } 1361 }
1362 1362
1363 ScrollableArea* EventHandler::associatedScrollableArea(const RenderLayer* layer) const 1363 ScrollableArea* EventHandler::associatedScrollableArea(const Layer* layer) const
1364 { 1364 {
1365 if (RenderLayerScrollableArea* scrollableArea = layer->scrollableArea()) { 1365 if (LayerScrollableArea* scrollableArea = layer->scrollableArea()) {
1366 if (scrollableArea->scrollsOverflow()) 1366 if (scrollableArea->scrollsOverflow())
1367 return scrollableArea; 1367 return scrollableArea;
1368 } 1368 }
1369 1369
1370 return nullptr; 1370 return nullptr;
1371 } 1371 }
1372 1372
1373 bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event) 1373 bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event)
1374 { 1374 {
1375 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); 1375 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent");
1376 1376
1377 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); 1377 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
1378 MaximumDurationTracker maxDurationTracker(&m_maxMouseMovedDuration); 1378 MaximumDurationTracker maxDurationTracker(&m_maxMouseMovedDuration);
1379 1379
1380 HitTestResult hoveredNode = HitTestResult(LayoutPoint()); 1380 HitTestResult hoveredNode = HitTestResult(LayoutPoint());
1381 bool result = handleMouseMoveOrLeaveEvent(event, &hoveredNode); 1381 bool result = handleMouseMoveOrLeaveEvent(event, &hoveredNode);
1382 1382
1383 Page* page = m_frame->page(); 1383 Page* page = m_frame->page();
1384 if (!page) 1384 if (!page)
1385 return result; 1385 return result;
1386 1386
1387 if (RenderLayer* layer = layerForNode(hoveredNode.innerNode())) { 1387 if (Layer* layer = layerForNode(hoveredNode.innerNode())) {
1388 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer )) 1388 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer ))
1389 layerScrollableArea->mouseMovedInContentArea(); 1389 layerScrollableArea->mouseMovedInContentArea();
1390 } 1390 }
1391 1391
1392 if (FrameView* frameView = m_frame->view()) 1392 if (FrameView* frameView = m_frame->view())
1393 frameView->mouseMovedInContentArea(); 1393 frameView->mouseMovedInContentArea();
1394 1394
1395 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); 1395 hoveredNode.setToShadowHostIfInUserAgentShadowRoot();
1396 page->chrome().mouseDidMoveOverElement(hoveredNode); 1396 page->chrome().mouseDidMoveOverElement(hoveredNode);
1397 page->chrome().setToolTip(hoveredNode); 1397 page->chrome().setToolTip(hoveredNode);
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
1856 result = m_capturingMouseEventsNode.get(); 1856 result = m_capturingMouseEventsNode.get();
1857 else { 1857 else {
1858 // If the target node is a text node, dispatch on the parent node - rdar ://4196646 1858 // If the target node is a text node, dispatch on the parent node - rdar ://4196646
1859 if (result && result->isTextNode()) 1859 if (result && result->isTextNode())
1860 result = NodeRenderingTraversal::parent(*result); 1860 result = NodeRenderingTraversal::parent(*result);
1861 } 1861 }
1862 m_nodeUnderMouse = result; 1862 m_nodeUnderMouse = result;
1863 1863
1864 // Fire mouseout/mouseover if the mouse has shifted to a different node. 1864 // Fire mouseout/mouseover if the mouse has shifted to a different node.
1865 if (fireMouseOverOut) { 1865 if (fireMouseOverOut) {
1866 RenderLayer* layerForLastNode = layerForNode(m_lastNodeUnderMouse.get()) ; 1866 Layer* layerForLastNode = layerForNode(m_lastNodeUnderMouse.get());
1867 RenderLayer* layerForNodeUnderMouse = layerForNode(m_nodeUnderMouse.get( )); 1867 Layer* layerForNodeUnderMouse = layerForNode(m_nodeUnderMouse.get());
1868 Page* page = m_frame->page(); 1868 Page* page = m_frame->page();
1869 1869
1870 if (m_lastNodeUnderMouse && (!m_nodeUnderMouse || m_nodeUnderMouse->docu ment() != m_frame->document())) { 1870 if (m_lastNodeUnderMouse && (!m_nodeUnderMouse || m_nodeUnderMouse->docu ment() != m_frame->document())) {
1871 // The mouse has moved between frames. 1871 // The mouse has moved between frames.
1872 if (LocalFrame* frame = m_lastNodeUnderMouse->document().frame()) { 1872 if (LocalFrame* frame = m_lastNodeUnderMouse->document().frame()) {
1873 if (FrameView* frameView = frame->view()) 1873 if (FrameView* frameView = frame->view())
1874 frameView->mouseExitedContentArea(); 1874 frameView->mouseExitedContentArea();
1875 } 1875 }
1876 } else if (page && (layerForLastNode && (!layerForNodeUnderMouse || laye rForNodeUnderMouse != layerForLastNode))) { 1876 } else if (page && (layerForLastNode && (!layerForNodeUnderMouse || laye rForNodeUnderMouse != layerForLastNode))) {
1877 // The mouse has moved between layers. 1877 // The mouse has moved between layers.
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
2408 if (m_longTapShouldInvokeContextMenu) { 2408 if (m_longTapShouldInvokeContextMenu) {
2409 m_longTapShouldInvokeContextMenu = false; 2409 m_longTapShouldInvokeContextMenu = false;
2410 return sendContextMenuEventForGesture(targetedEvent); 2410 return sendContextMenuEventForGesture(targetedEvent);
2411 } 2411 }
2412 #endif 2412 #endif
2413 return false; 2413 return false;
2414 } 2414 }
2415 2415
2416 bool EventHandler::handleScrollGestureOnResizer(Node* eventTarget, const Platfor mGestureEvent& gestureEvent) { 2416 bool EventHandler::handleScrollGestureOnResizer(Node* eventTarget, const Platfor mGestureEvent& gestureEvent) {
2417 if (gestureEvent.type() == PlatformEvent::GestureScrollBegin) { 2417 if (gestureEvent.type() == PlatformEvent::GestureScrollBegin) {
2418 RenderLayer* layer = eventTarget->renderer() ? eventTarget->renderer()-> enclosingLayer() : nullptr; 2418 Layer* layer = eventTarget->renderer() ? eventTarget->renderer()->enclos ingLayer() : nullptr;
2419 IntPoint p = m_frame->view()->windowToContents(gestureEvent.position()); 2419 IntPoint p = m_frame->view()->windowToContents(gestureEvent.position());
2420 if (layer && layer->scrollableArea() && layer->scrollableArea()->isPoint InResizeControl(p, ResizerForTouch)) { 2420 if (layer && layer->scrollableArea() && layer->scrollableArea()->isPoint InResizeControl(p, ResizerForTouch)) {
2421 m_resizeScrollableArea = layer->scrollableArea(); 2421 m_resizeScrollableArea = layer->scrollableArea();
2422 m_resizeScrollableArea->setInResizeMode(true); 2422 m_resizeScrollableArea->setInResizeMode(true);
2423 m_offsetFromResizeCorner = LayoutSize(m_resizeScrollableArea->offset FromResizeCorner(p)); 2423 m_offsetFromResizeCorner = LayoutSize(m_resizeScrollableArea->offset FromResizeCorner(p));
2424 return true; 2424 return true;
2425 } 2425 }
2426 } else if (gestureEvent.type() == PlatformEvent::GestureScrollUpdate) { 2426 } else if (gestureEvent.type() == PlatformEvent::GestureScrollUpdate) {
2427 if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) { 2427 if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) {
2428 m_resizeScrollableArea->resize(gestureEvent, m_offsetFromResizeCorne r); 2428 m_resizeScrollableArea->resize(gestureEvent, m_offsetFromResizeCorne r);
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after
3211 void EventHandler::clearDragDataTransfer() 3211 void EventHandler::clearDragDataTransfer()
3212 { 3212 {
3213 if (dragState().m_dragDataTransfer) { 3213 if (dragState().m_dragDataTransfer) {
3214 dragState().m_dragDataTransfer->clearDragImage(); 3214 dragState().m_dragDataTransfer->clearDragImage();
3215 dragState().m_dragDataTransfer->setAccessPolicy(DataTransferNumb); 3215 dragState().m_dragDataTransfer->setAccessPolicy(DataTransferNumb);
3216 } 3216 }
3217 } 3217 }
3218 3218
3219 void EventHandler::dragSourceEndedAt(const PlatformMouseEvent& event, DragOperat ion operation) 3219 void EventHandler::dragSourceEndedAt(const PlatformMouseEvent& event, DragOperat ion operation)
3220 { 3220 {
3221 // Send a hit test request so that RenderLayer gets a chance to update the : hover and :active pseudoclasses. 3221 // Send a hit test request so that Layer gets a chance to update the :hover and :active pseudoclasses.
3222 HitTestRequest request(HitTestRequest::Release); 3222 HitTestRequest request(HitTestRequest::Release);
3223 prepareMouseEvent(request, event); 3223 prepareMouseEvent(request, event);
3224 3224
3225 if (dragState().m_dragSrc) { 3225 if (dragState().m_dragSrc) {
3226 dragState().m_dragDataTransfer->setDestinationOperation(operation); 3226 dragState().m_dragDataTransfer->setDestinationOperation(operation);
3227 // for now we don't care if event handler cancels default behavior, sinc e there is none 3227 // for now we don't care if event handler cancels default behavior, sinc e there is none
3228 dispatchDragSrcEvent(EventTypeNames::dragend, event); 3228 dispatchDragSrcEvent(EventTypeNames::dragend, event);
3229 } 3229 }
3230 clearDragDataTransfer(); 3230 clearDragDataTransfer();
3231 dragState().m_dragSrc = nullptr; 3231 dragState().m_dragSrc = nullptr;
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
3906 unsigned EventHandler::accessKeyModifiers() 3906 unsigned EventHandler::accessKeyModifiers()
3907 { 3907 {
3908 #if OS(MACOSX) 3908 #if OS(MACOSX)
3909 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; 3909 return PlatformEvent::CtrlKey | PlatformEvent::AltKey;
3910 #else 3910 #else
3911 return PlatformEvent::AltKey; 3911 return PlatformEvent::AltKey;
3912 #endif 3912 #endif
3913 } 3913 }
3914 3914
3915 } // namespace blink 3915 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/page/EventHandler.h ('k') | Source/core/page/FocusController.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698