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

Side by Side Diff: sky/engine/core/frame/NewEventHandler.cpp

Issue 874823002: Move GestureEvent to NewEventDispatcher (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Build fixes Created 5 years, 11 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
« no previous file with comments | « sky/engine/core/frame/NewEventHandler.h ('k') | sky/engine/core/page/EventHandler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sky/engine/config.h" 5 #include "sky/engine/config.h"
6 #include "sky/engine/core/frame/NewEventHandler.h" 6 #include "sky/engine/core/frame/NewEventHandler.h"
7 7
8 #include "sky/engine/core/dom/Document.h" 8 #include "sky/engine/core/dom/Document.h"
9 #include "sky/engine/core/dom/NodeRenderingTraversal.h" 9 #include "sky/engine/core/dom/NodeRenderingTraversal.h"
10 #include "sky/engine/core/editing/Editor.h" 10 #include "sky/engine/core/editing/Editor.h"
11 #include "sky/engine/core/editing/FrameSelection.h" 11 #include "sky/engine/core/editing/FrameSelection.h"
12 #include "sky/engine/core/editing/htmlediting.h" 12 #include "sky/engine/core/editing/htmlediting.h"
13 #include "sky/engine/core/events/GestureEvent.h"
13 #include "sky/engine/core/events/PointerEvent.h" 14 #include "sky/engine/core/events/PointerEvent.h"
14 #include "sky/engine/core/frame/LocalFrame.h" 15 #include "sky/engine/core/frame/LocalFrame.h"
15 #include "sky/engine/core/frame/FrameView.h" 16 #include "sky/engine/core/frame/FrameView.h"
16 #include "sky/engine/core/page/EventWithHitTestResults.h" 17 #include "sky/engine/core/page/EventWithHitTestResults.h"
17 #include "sky/engine/core/rendering/RenderObject.h" 18 #include "sky/engine/core/rendering/RenderObject.h"
18 #include "sky/engine/core/rendering/RenderView.h" 19 #include "sky/engine/core/rendering/RenderView.h"
19 #include "sky/engine/platform/geometry/FloatPoint.h" 20 #include "sky/engine/platform/geometry/FloatPoint.h"
20 #include "sky/engine/public/platform/WebInputEvent.h" 21 #include "sky/engine/public/platform/WebInputEvent.h"
21 22
22 namespace blink { 23 namespace blink {
23 24
24 static VisiblePosition visiblePositionForHitTestResult(const HitTestResult& hitT estResult) 25 static VisiblePosition visiblePositionForHitTestResult(const HitTestResult& hitT estResult)
25 { 26 {
26 Node* innerNode = hitTestResult.innerNode(); 27 Node* innerNode = hitTestResult.innerNode();
27 VisiblePosition position(innerNode->renderer()->positionForPoint(hitTestResu lt.localPoint())); 28 VisiblePosition position(innerNode->renderer()->positionForPoint(hitTestResu lt.localPoint()));
28 if (!position.isNull()) 29 if (!position.isNull())
29 return position; 30 return position;
30 return VisiblePosition(firstPositionInOrBeforeNode(innerNode), DOWNSTREAM); 31 return VisiblePosition(firstPositionInOrBeforeNode(innerNode), DOWNSTREAM);
31 } 32 }
32 33
33 static LayoutPoint positionForEvent(const WebPointerEvent& event) 34 template<typename EventType>
35 static LayoutPoint positionForEvent(const EventType& event)
34 { 36 {
35 return roundedLayoutPoint(FloatPoint(event.x, event.y)); 37 return roundedLayoutPoint(FloatPoint(event.x, event.y));
36 } 38 }
37 39
38 NewEventHandler::NewEventHandler(LocalFrame& frame) 40 NewEventHandler::NewEventHandler(LocalFrame& frame)
39 : m_frame(frame) 41 : m_frame(frame)
40 { 42 {
41 } 43 }
42 44
43 NewEventHandler::~NewEventHandler() 45 NewEventHandler::~NewEventHandler()
(...skipping 20 matching lines...) Expand all
64 } 66 }
65 67
66 bool NewEventHandler::dispatchPointerEvent(Node& target, const WebPointerEvent& event) 68 bool NewEventHandler::dispatchPointerEvent(Node& target, const WebPointerEvent& event)
67 { 69 {
68 RefPtr<PointerEvent> pointerEvent = PointerEvent::create(event); 70 RefPtr<PointerEvent> pointerEvent = PointerEvent::create(event);
69 // TODO(abarth): Keep track of how many pointers are targeting the same node 71 // TODO(abarth): Keep track of how many pointers are targeting the same node
70 // and only mark the first one as primary. 72 // and only mark the first one as primary.
71 return target.dispatchEvent(pointerEvent.release()); 73 return target.dispatchEvent(pointerEvent.release());
72 } 74 }
73 75
76 bool NewEventHandler::dispatchGestureEvent(Node& target, const WebGestureEvent& event)
77 {
78 RefPtr<GestureEvent> gestureEvent = GestureEvent::create(event);
79 return target.dispatchEvent(gestureEvent.release());
80 }
81
74 bool NewEventHandler::dispatchClickEvent(Node& capturingTarget, const WebPointer Event& event) 82 bool NewEventHandler::dispatchClickEvent(Node& capturingTarget, const WebPointer Event& event)
75 { 83 {
76 ASSERT(event.type == WebInputEvent::PointerUp); 84 ASSERT(event.type == WebInputEvent::PointerUp);
77 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); 85 HitTestResult hitTestResult = performHitTest(positionForEvent(event));
78 Node* releaseTarget = targetForHitTestResult(hitTestResult); 86 Node* releaseTarget = targetForHitTestResult(hitTestResult);
79 Node* clickTarget = NodeRenderingTraversal::commonAncestor(*releaseTarget, c apturingTarget); 87 Node* clickTarget = NodeRenderingTraversal::commonAncestor(*releaseTarget, c apturingTarget);
80 if (!clickTarget) 88 if (!clickTarget)
81 return true; 89 return true;
82 // TODO(abarth): Make a proper gesture event that includes information from the event. 90 // TODO(abarth): Make a proper gesture event that includes information from the event.
83 return clickTarget->dispatchEvent(Event::createCancelableBubble(EventTypeNam es::click)); 91 return clickTarget->dispatchEvent(Event::createCancelableBubble(EventTypeNam es::click));
(...skipping 18 matching lines...) Expand all
102 if (event.type == WebInputEvent::PointerDown) 110 if (event.type == WebInputEvent::PointerDown)
103 return handlePointerDownEvent(event); 111 return handlePointerDownEvent(event);
104 if (event.type == WebInputEvent::PointerUp) 112 if (event.type == WebInputEvent::PointerUp)
105 return handlePointerUpEvent(event); 113 return handlePointerUpEvent(event);
106 if (event.type == WebInputEvent::PointerMove) 114 if (event.type == WebInputEvent::PointerMove)
107 return handlePointerMoveEvent(event); 115 return handlePointerMoveEvent(event);
108 ASSERT(event.type == WebInputEvent::PointerCancel); 116 ASSERT(event.type == WebInputEvent::PointerCancel);
109 return handlePointerCancelEvent(event); 117 return handlePointerCancelEvent(event);
110 } 118 }
111 119
120 bool NewEventHandler::handleGestureEvent(const WebGestureEvent& event)
121 {
122 HitTestResult hitTestResult = performHitTest(positionForEvent(event));
123 RefPtr<Node> target = targetForHitTestResult(hitTestResult);
124 return !dispatchGestureEvent(*target, event);
125 }
126
112 bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event) 127 bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event)
113 { 128 {
114 ASSERT(m_targetForPointer.find(event.pointer) == m_targetForPointer.end()); 129 ASSERT(m_targetForPointer.find(event.pointer) == m_targetForPointer.end());
115 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); 130 HitTestResult hitTestResult = performHitTest(positionForEvent(event));
116 RefPtr<Node> target = targetForHitTestResult(hitTestResult); 131 RefPtr<Node> target = targetForHitTestResult(hitTestResult);
117 m_targetForPointer[event.pointer] = target; 132 m_targetForPointer[event.pointer] = target;
118 bool eventSwallowed = !dispatchPointerEvent(*target, event); 133 bool eventSwallowed = !dispatchPointerEvent(*target, event);
119 // TODO(abarth): Set the target for the pointer to something determined when 134 // TODO(abarth): Set the target for the pointer to something determined when
120 // dispatching the event. 135 // dispatching the event.
121 updateSelectionForPointerDown(hitTestResult, event); 136 updateSelectionForPointerDown(hitTestResult, event);
(...skipping 21 matching lines...) Expand all
143 return target && dispatchPointerEvent(*target.get(), event); 158 return target && dispatchPointerEvent(*target.get(), event);
144 } 159 }
145 160
146 bool NewEventHandler::handlePointerCancelEvent(const WebPointerEvent& event) 161 bool NewEventHandler::handlePointerCancelEvent(const WebPointerEvent& event)
147 { 162 {
148 RefPtr<Node> target = m_targetForPointer[event.pointer]; 163 RefPtr<Node> target = m_targetForPointer[event.pointer];
149 return target && dispatchPointerEvent(*target, event); 164 return target && dispatchPointerEvent(*target, event);
150 } 165 }
151 166
152 } 167 }
OLDNEW
« no previous file with comments | « sky/engine/core/frame/NewEventHandler.h ('k') | sky/engine/core/page/EventHandler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698